Comment puis-je faire facilement 5 copies d'un fichier?


13

Je peux déplacer 5 fichiers vers quelque part en utilisant:

$ mv my-{1..5}.jpg /path/to/dir/

Comment puis-je faire une copie d'un fichier par 5 fois facilement

# doesn't work
$ cp my.jpg my-{1..5}.jpg

Est-il possible de ne pas utiliser un for loop?

Réponses:


12

Essaye ça

for f in {1..5}; do cp my.jpg my$f.jpg; done

(je n'ai pas besoin de m'essayer ici)


6
remplacer for f in $fpar for f in $(seq 5).
Dan D.

1
Est-il possible de ne pas utiliser un for loop?
kev

@kev - Je l'ai toujours vu ainsi; aussi, plus readabe.
Tour

3
@kev, qu'est-ce qui ne va pas avec une boucle for? C'est pour
ça

3
@DanD .: seqn'est pas nécessaire dans Bash. Vous pouvez utiliser for f in {1..5}oufor ((f=1; f<=5; f++))
pause jusqu'à nouvel ordre.

6

Voici une façon de le faire sans forboucle et sans les risques d'utilisation eval:

printf '%s\n' {1..5} | xargs -I {} cp my.jpg my-{}.jpg

C'est toujours effectivement une boucle.


4

Essayez tee:

tee <my.jpg >/dev/null my-{1..5}.jpg

Ou parallel:

parallel cp my.jpg ::: my-{1..5}.jpg

3

Vous pouvez le faire sans boucle .. en utilisant teeet l' {}expansion d'accolade.

EDIT: (modifié selon le commentaire de Dennis Williamson :

Pour un fichier nommé "my-.jpg"

pre="my-"; suf=".jpg"
<"$pre$suf" tee "$pre"{1..5}"$suf" >/dev/null

1
Il n'est pas nécessaire d'utiliser eval. <"$pre$suf" tee "$pre"{1..5}"$suf"fonctionne très bien.
pause jusqu'à nouvel ordre.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.