split — Dateien in kleinere Teile zerlegen
Praxis-Guide zu split — große Dateien nach Zeilenzahl, Byte-Größe oder Anzahl der Teile zerlegen. Für Verarbeitung, Transfer und parallele Jobs.
split zerlegt eine Datei in mehrere kleinere Stücke – wahlweise nach Zeilenzahl (-l), Byte-Größe (-b) oder einer festen Anzahl von Teilen (-n). Das ist praktisch, um riesige Logdateien handhabbar zu machen, große Archive für den Transfer zu stückeln oder Daten für die parallele Verarbeitung aufzuteilen. Die Teile erhalten standardmäßig einen alphabetischen Suffix (xaa, xab, …), den du über ein eigenes Präfix sowie numerische Suffixe und Endungen anpasst. Wieder zusammensetzen kannst du die Stücke schlicht mit cat, solange du die Reihenfolge beibehältst.
Nach Zeilen aufteilen
split -l <n> <file> — Teilt die Datei in Stücke mit je n Zeilen.
split -l 1000 largefile.txtsplit -l <n> <file> <prefix> — Teilt mit einem eigenen Ausgabe-Präfix.
split -l 500 data.csv part_split -l 1 <file> — Schreibt jede Zeile in eine eigene Datei.
split -l 1 urls.txt url_Nach Größe aufteilen
split -b <size> <file> — Teilt in Stücke der angegebenen Byte-Größe (Suffixe K, M, G).
split -b 10M largefile.tar.gz chunk_split -C <size> <file> — Teilt an Zeilengrenzen und hält die Stücke unter der Größengrenze.
split -C 1M logfile.txt log_split -b 100K <file> <prefix> — Teilt in 100-KB-Stücke mit einem eigenen Präfix.
split -b 100K backup.sql sql_Nach Anzahl aufteilen
split -n <n> <file> — Teilt in genau n Dateien von ungefähr gleicher Größe.
split -n 5 largefile.txt part_split -n l/<n> <file> — Teilt in n Dateien, ohne Zeilen zu zerteilen.
split -n l/4 data.csv quarter_split -n r/<n> <file> — Verteilt Zeilen reihum (Round-Robin) auf n Dateien.
split -n r/3 tasks.txt worker_Ausgabeoptionen
split -d <file> — Verwendet numerische Suffixe (00, 01, 02 …) statt alphabetischer (aa, ab, ac …).
split -d -l 1000 data.csv part_split -a <n> <file> — Legt die Suffixlänge fest (Standard: 2).
split -a 4 -l 100 huge.txt piece_split --additional-suffix='.txt' <file> — Hängt den Ausgabedateien eine Dateiendung an.
split -l 500 --additional-suffix='.csv' data.csv part_split --verbose <file> — Gibt für jede erzeugte Ausgabedatei eine Meldung aus.
split --verbose -l 1000 data.txt chunk_split --filter='<cmd>' <file> — Leitet jedes Stück durch einen Befehl, statt es in Dateien zu schreiben.
split -l 1000 --filter='gzip > $FILE.gz' data.txt part_Typische Anwendungsfälle
split -b 25M file.tar.gz part_ && cat part_* > file.tar.gz — Zerlegt eine große Datei für den Transfer und setzt sie wieder zusammen.
split -b 25M backup.tar.gz upload_ && cat upload_* > backup_restored.tar.gzsplit -l 1000 data.csv batch_ && for f in batch_*; do process "$f"; done — Teilt Daten auf und verarbeitet jeden Stapel.
split -l 1000 users.csv batch_ && for f in batch_*; do ./import.sh "$f"; donewc -l <file> && split -n l/<n> <file> — Prüft die Zeilenzahl und teilt dann gleichmäßig für die parallele Verarbeitung.
wc -l data.csv && split -n l/$(nproc) data.csv worker_ Fazit
split ist das Mittel der Wahl, wenn eine Datei zu groß für ein Werkzeug, einen Upload oder einen Arbeitsspeicher wird. Merke dir den Unterschied zwischen den Modi: -b schneidet hart nach Bytes (kann mitten in einer Zeile trennen), -C und -n l/… respektieren Zeilengrenzen, und -n r/… verteilt reihum. Beim Zusammensetzen kommt es allein auf die Reihenfolge an – cat prefix_* funktioniert, weil die Shell die alphabetischen Suffixe korrekt sortiert; nutze daher genügend Suffixstellen (-a), damit die Sortierung auch bei vielen Teilen stimmt. Prüfe nach dem Wiederzusammensetzen großer Binärdateien am besten die Prüfsumme.
Weiterführende Links
- GNU coreutils: split – offizielle Referenz mit allen Optionen (englisch)
- ubuntuusers-Wiki: split – deutschsprachige Dokumentation zum Aufteilen von Dateien