Il existe une commande standard pour le fractionnement de fichiers - fractionner.
Par exemple, si je veux diviser un fichier de mots en plusieurs morceaux de 10000 lignes, je peux utiliser:
split -dl 10000 words wrd
et il générerait plusieurs fichiers de la forme wrd.01, wrd.02 et ainsi de suite.
Mais je veux avoir une extension spécifique pour ces fichiers - par exemple, je veux obtenir les fichiers wtd.01.txt, wrd.02.txt.
Y a-t-il un moyen de le faire?
Pas avec split
, mais vous pouvez facilement les renommer par la suite, ou vous pouvez le faire dans awk
:
awk '{filename = "wrd." int((NR-1)/10000) ".txt"; print >> filename}' inputfile
Ce n'était pas disponible à l'époque mais avec plus de versions récentes (≥ 8.16
) de gnu split
on peut utiliser le --additional-suffix
commutateur pour contrôler l'extension résultante. De man split
:
--additional-suffix=SUFFIX
append an additional SUFFIX to file names.
donc lorsque vous utilisez cette option:
split -dl 10000 --additional-suffix=.txt words wrd
les pièces résultantes se termineront automatiquement par .txt
:
wrd00.txt
wrd01.txt
.........
Ces tâches sont mieux gérées avec le Shell. Utilisez split, puis écrivez une boucle simple pour renommer les fichiers. Par exemple.
for file in wrd.*
do
mv "$file" "$file.txt"
done
renommerait vos fichiers wrd.01, wrd.02, etc. afin qu'ils aient tous une extension .txt.