Dis, si je voulais faire N
copys de a.txt
, et a.txt
voulais qu'ils soient numérotés a1.txt
, a2.txt
, a3.txt
, etc …
Comment ferais-je une telle chose succinctement?
cp
lui-même ne peut faire qu'une copy (d'un seul file) à la fois, mais ce n'est pas trop difficile avec une boucle rapide:
for i in {1..10}; do cp a.txt a$i.txt; done
En supposant que vous avez votre valeur N dans une variable 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 avec la boucle montrée dans la réponse de Kevin.
Les solutions utilisant cp
sont peu efficaces, car vous n'avez pas besoin de lire le même file N
fois pour faire N
copys. On peut utiliser tee
place:
cat a.txt | ( for i in `seq 1 $N`; do echo a"$i".txt; done | xargs tee )
Si vous voulez quelque chose de plus funky, vous pouvez par exemple faire: for t in $(seq --format="funky-%03.0f-numbered.txt" 25 3 40); do cp orig $t; done
for t in $(seq --format="funky-%03.0f-numbered.txt" 25 3 40); do cp orig $t; done
for t in $(seq --format="funky-%03.0f-numbered.txt" 25 3 40); do cp orig $t; done
.