¿Cómo puedo hacer 5 copias de un archivo fácilmente?

13

Puedo mover 5 archivos a algún lugar usando:

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

¿Cómo puedo hacer una copia de un archivo 5 veces fácilmente

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

¿Es posible no usar un for loop?

kev
fuente

Respuestas:

12

Prueba esto

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

(No tengo fiesta aquí para probarlo yo mismo)

Torre
fuente
66
reemplazar for f in $fcon for f in $(seq 5).
Dan D.
1
¿Es posible no usar un for loop?
kev
@kev: siempre lo he visto así; Además, más legible.
Torre
3
@kev, ¿qué tiene de malo un bucle for? Para eso están los bucles ...
soandos
3
@DanD .: seqno es necesario en Bash. Puede usar for f in {1..5}ofor ((f=1; f<=5; f++))
Pausado hasta nuevo aviso.
6

Aquí hay una manera de hacerlo sin un forbucle y sin los riesgos de usar eval:

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

Sigue siendo efectivamente un bucle.

Pausado hasta nuevo aviso.
fuente
4

Prueba tee:

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

O parallel:

parallel cp my.jpg ::: my-{1..5}.jpg
kev
fuente
3

Puede hacerlo sin utilizar un bucle .. teey {}la expansión de llaves.

EDITAR: (enmendado según el comentario de Dennis Williamson :

Para un archivo llamado "my-.jpg"

pre="my-"; suf=".jpg"
<"$pre$suf" tee "$pre"{1..5}"$suf" >/dev/null
Peter.O
fuente
1
No es necesario usar eval. <"$pre$suf" tee "$pre"{1..5}"$suf"funciona bien
Pausado hasta nuevo aviso.