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.