Como posso fazer 5 cópias de um arquivo facilmente?


13

Posso mover 5 arquivos para algum lugar usando:

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

Como posso copiar cópias de um arquivo 5 vezes com facilidade

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

É possível não usar a for loop?

Respostas:


12

Tente isto

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

(não tem festança aqui para tentar eu mesmo)


6
substitua for f in $fpor for f in $(seq 5).
Dan D.

1
É possível não usar a for loop?
kev

@ kev - eu sempre vi isso assim; Além disso, mais readabe.
Rook

3
@ kev, o que há de errado com um loop for? Isto é o que para loops são ...
soandos

3
@ DanD .: seqnão é necessário no Bash. Você pode usar for f in {1..5}oufor ((f=1; f<=5; f++))
Pausado até novo aviso.

6

Aqui está uma maneira de fazer isso sem forloop e sem os riscos de usar eval:

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

Ainda é efetivamente um loop.


4

Tente tee:

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

Ou parallel:

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

3

Você pode fazer isso sem um loop. Usando teee {}preparando a expansão.

EDIT: (alterado conforme o comentário de Dennis Williamson :

Para um arquivo chamado "my-.jpg"

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

1
Não é necessário usar eval. <"$pre$suf" tee "$pre"{1..5}"$suf"funciona muito bem.
Pausado até novo aviso.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.