
Скажем, если бы я хотел сделать N
копии a.txt
и хотел бы, чтобы они были пронумерованы a1.txt
, a2.txt
, a3.txt
, и т. д.
Как бы я это сделал лаконично?
решение1
cp
Сам по себе он может создавать только одну копию (одного файла) за раз, но это не так уж и сложно с помощью быстрого цикла:
for i in {1..10}; do cp a.txt a$i.txt; done
решение2
Предположим, что у вас есть значение N в переменной bash:
for i in `seq 1 $N`; do cp a.txt a$i.txt; done
или
for ((i=1;i<=$N;i++)); do cp a.txt a$i.txt; done
или с помощью цикла, показанного в ответе Кевина.
решение3
Решения с использованием cp
несколько неэффективны, поскольку вам не нужно читать те же самые N
времена файла, чтобы сделать N
копии. Вместо этого можно использовать tee
:
cat a.txt | ( for i in `seq 1 $N`; do echo a"$i".txt; done | xargs tee )
решение4
Если вы хотите чего-то более необычного, вы можете, например, сделать следующее:
for t in $(seq --format="funky-%03.0f-numbered.txt" 25 3 40); do cp orig $t; done
.