
Digamos, se eu quisesse fazer N
cópias de a.txt
, e quisesse que elas fossem numeradas a1.txt
, a2.txt
, a3.txt
, etc...
Como eu faria uma coisa dessas de forma sucinta?
Responder1
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
Responder2
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.
Responder3
As soluções que utilizam cp
são um tanto ineficientes, pois não é necessário ler os mesmos arquivos N
para fazer N
cópias. Pode-se usar tee
em vez disso:
cat a.txt | ( for i in `seq 1 $N`; do echo a"$i".txt; done | xargs tee )
Responder4
Se quiser algo mais descolado, você pode por exemplo fazer:
for t in $(seq --format="funky-%03.0f-numbered.txt" 25 3 40); do cp orig $t; done
.