cp
em si só pode fazer uma cópia (de um único arquivo) por vez, mas não é muito difícil com um loop rápido:
for i in {1..10}; do cp a.txt a$i.txt; done
Digamos que, se eu quisesse fazer N
cópias de a.txt
, e quisesse que elas fossem numeradas em a1.txt
, a2.txt
, a3.txt
, etc ...
Como eu faria uma coisa dessas de forma sucinta?
Supondo que você tenha seu valor N em uma variável bash:
for i in 'seq 1 $N'; do cp a.txt a$i.txt; done
ou
for ((i=1;i<=$N;i++)); do cp a.txt a$i.txt; done
ou com o loop mostrado na resposta de Kevin.
As soluções que usam cp
são um pouco ineficientes, porque você não precisa ler o mesmo arquivo N
times para fazer N
copies. Pode-se usar tee
:
cat a.txt | ( for i in 'seq 1 $N'; do echo a"$i".txt; done | xargs tee )
Se você quiser algo mais divertido, por exemplo, você pode:
for t in $(seq --format="funky-%03.0f-numbered.txt" 25 3 40); do cp orig $t; done
.