¿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?

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)


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.


4

Prueba tee:

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

O parallel:

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

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

1
No es necesario usar eval. <"$pre$suf" tee "$pre"{1..5}"$suf"funciona bien
Pausado hasta nuevo aviso.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.