Come posso fare facilmente 5 copie di un file?


13

Posso spostare 5 file da qualche parte usando:

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

Come posso fare una copia di un file per 5 volte facilmente

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

È possibile non usare un for loop?

Risposte:


12

Prova questo

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

(non ho bash qui per provarlo da solo)


6
sostituire for f in $fcon for f in $(seq 5).
Dan D.

1
È possibile non usare un for loop?
kev

@kev - L'ho sempre visto fare così; inoltre, più pronto.
Rook,

3
@kev, cosa c'è che non va in un ciclo for? Questo è ciò che fanno i loop per ...
soandos,

3
@DanD .: seqnon è necessario in Bash. È possibile utilizzare for f in {1..5}ofor ((f=1; f<=5; f++))
In pausa fino a nuovo avviso.

6

Ecco un modo per farlo senza un forciclo e senza i rischi dell'uso eval:

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

È ancora efficacemente un ciclo.


4

Prova tee:

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

Oppure parallel:

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

3

Puoi farlo senza un ciclo .. usando teee {}rinforzi l'espansione.

EDIT: (modificato secondo il commento di Dennis Williamson :

Per un file chiamato "my-.jpg"

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

1
Non è necessario utilizzare eval. <"$pre$suf" tee "$pre"{1..5}"$suf"funziona benissimo.
In pausa fino a ulteriore avviso.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.