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?
Ce n'était pas disponible à l'époque mais avec des versions plus récentes (
≥ 8.16
),gnu split
on peut utiliser le--additional-suffix
commutateur pour contrôler l'extension résultante. Deman split
:donc lorsque vous utilisez cette option:
les pièces résultantes se termineront automatiquement par
.txt
:la source
gnu split
, une partie degnu coreutils
. Il est également disponible sur OSX si vous installezcoreutils
viahomebrew
mais notez que par défaut, sur OSX, lesgnu
utilitaires ont ung
préfixe à leur nom (par exemplegstat
au lieu destat
) donc vous l'invoquez commegsplit
(ou modifiez le CHEMIN selon le guide ici si vous voulez pour l'utiliser commesplit
sur l'OSXsplit
). HTH.gsplit
pour faire fonctionner les suffixes numériques (-d).Ces tâches sont mieux gérées avec le shell. Utilisez le fractionnement puis écrivez une boucle simple pour renommer les fichiers. Par exemple
renommerait vos fichiers wrd.01, wrd.02, etc. afin qu'ils aient tous une extension .txt.
la source
split+mv
combo est plus de 6 fois plus rapide queawk
(environ 3s vs 18s ) pour un fichier d'entrée de 10 millions de lignes (75 Mo) ... le texte de chaque ligne était son propre numéro de ligne ... Merci d'avoir redéclaré le "évident" :)split + mv
c'est 75 fois plus rapide queawk
: Lorsqu'il y a 100 fois plus de fichiers,split + mv
c'est 1,5 fois plus rapide queawk
. Donc, pour moi, cettesplit + mv
méthode gagne haut la main. C'est comme consice (sans doute plus), et est plus rapide queawk
.for file in wrd.*; do mv "$file" "$file.txt"; done
:)