Es gibt einen Standardbefehl zum Aufteilen von Dateien - Aufteilen.
Wenn ich zum Beispiel eine Wortdatei in mehrere Stücke von 10000 Zeilen aufteilen möchte, kann ich Folgendes verwenden:
split -dl 10000 words wrd
und es würde mehrere Dateien der Form wrd.01, wrd.02 und so weiter erzeugen.
Ich möchte jedoch eine bestimmte Erweiterung für diese Dateien haben, z. B. wtd.01.txt- oder wrd.02.txt-Dateien.
Gibt es eine Möglichkeit, dies zu tun?
Dies war damals noch nicht verfügbar, aber mit neueren Versionen (
≥ 8.16
)gnu split
kann man den--additional-suffix
Schalter verwenden, um die resultierende Erweiterung zu steuern. Vonman split
:Wenn Sie diese Option verwenden:
die resultierenden Stücke enden automatisch in
.txt
:quelle
gnu split
Teil vongnu coreutils
. Es ist auch unter OSX verfügbar, wenn Siecoreutils
über installieren.homebrew
Beachten Sie jedoch, dass diegnu
Dienstprogramme unter OSX standardmäßig eineng
vorangestellten Namen haben (z. B.gstat
anstelle vonstat
), sodass Sie ihn wie ingsplit
der Anleitung hier beschrieben aufrufen (oder den PFAD ändern , wenn Sie möchten) um es wiesplit
über das OSX zu benutzensplit
). HTH.gsplit
damit die numerischen Suffixe (-d) funktionieren.Solche Aufgaben erledigen Sie am besten mit der Shell. Verwenden Sie split und schreiben Sie eine einfache Schleife, um die Dateien umzubenennen. Z.B
Benennen Sie Ihre Dateien wrd.01, wrd.02 usw. um, damit sie alle die Erweiterung .txt haben.
quelle
split+mv
Combo ist mehr als 6-mal schneller alsawk
(ca. 3s vs 18s ) für eine 10-Millionen-Zeilen-Eingabedatei (75 MB) ... der Text in jeder Zeile hatte eine eigene Zeilennummer ... Danke für die erneute Angabe die "offensichtliche" :)split + mv
ist 75- mal schneller alsawk
: Wenn 100-mal mehr Dateien vorhanden sind,split + mv
ist 1,5- mal schneller alsawk
. Für michsplit + mv
gewinnt diese Methode zweifellos. Es ist als consice (wohl mehr) und ist schneller alsawk
.for file in wrd.*; do mv "$file" "$file.txt"; done
:)