# 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.

Source: https://www.jpkc.com/db/cheatsheets/files-text/split/

<!-- PROSE:intro -->
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.
<!-- PROSE:intro:end -->

## Nach Zeilen aufteilen

`split -l <n> <file>` — Teilt die Datei in Stücke mit je n Zeilen.

```bash
split -l 1000 largefile.txt
```

`split -l <n> <file> <prefix>` — Teilt mit einem eigenen Ausgabe-Präfix.

```bash
split -l 500 data.csv part_
```

`split -l 1 <file>` — Schreibt jede Zeile in eine eigene Datei.

```bash
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).

```bash
split -b 10M largefile.tar.gz chunk_
```

`split -C <size> <file>` — Teilt an Zeilengrenzen und hält die Stücke unter der Größengrenze.

```bash
split -C 1M logfile.txt log_
```

`split -b 100K <file> <prefix>` — Teilt in 100-KB-Stücke mit einem eigenen Präfix.

```bash
split -b 100K backup.sql sql_
```

## Nach Anzahl aufteilen

`split -n <n> <file>` — Teilt in genau n Dateien von ungefähr gleicher Größe.

```bash
split -n 5 largefile.txt part_
```

`split -n l/<n> <file>` — Teilt in n Dateien, ohne Zeilen zu zerteilen.

```bash
split -n l/4 data.csv quarter_
```

`split -n r/<n> <file>` — Verteilt Zeilen reihum (Round-Robin) auf n Dateien.

```bash
split -n r/3 tasks.txt worker_
```

## Ausgabeoptionen

`split -d <file>` — Verwendet numerische Suffixe (00, 01, 02 …) statt alphabetischer (aa, ab, ac …).

```bash
split -d -l 1000 data.csv part_
```

`split -a <n> <file>` — Legt die Suffixlänge fest (Standard: 2).

```bash
split -a 4 -l 100 huge.txt piece_
```

`split --additional-suffix='.txt' <file>` — Hängt den Ausgabedateien eine Dateiendung an.

```bash
split -l 500 --additional-suffix='.csv' data.csv part_
```

`split --verbose <file>` — Gibt für jede erzeugte Ausgabedatei eine Meldung aus.

```bash
split --verbose -l 1000 data.txt chunk_
```

`split --filter='<cmd>' <file>` — Leitet jedes Stück durch einen Befehl, statt es in Dateien zu schreiben.

```bash
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.

```bash
split -b 25M backup.tar.gz upload_ && cat upload_* > backup_restored.tar.gz
```

`split -l 1000 data.csv batch_ && for f in batch_*; do process "$f"; done` — Teilt Daten auf und verarbeitet jeden Stapel.

```bash
split -l 1000 users.csv batch_ && for f in batch_*; do ./import.sh "$f"; done
```

`wc -l <file> && split -n l/<n> <file>` — Prüft die Zeilenzahl und teilt dann gleichmäßig für die parallele Verarbeitung.

```bash
wc -l data.csv && split -n l/$(nproc) data.csv worker_
```

<!-- PROSE:outro -->
## 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](https://www.gnu.org/software/coreutils/manual/html_node/split-invocation.html) – offizielle Referenz mit allen Optionen (englisch)
- [ubuntuusers-Wiki: split](https://wiki.ubuntuusers.de/split/) – deutschsprachige Dokumentation zum Aufteilen von Dateien
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [cut](https://www.jpkc.com/db/cheatsheets/files-text/cut/) – Felder, Zeichen oder Byte-Bereiche aus Zeilen herausschneiden
- [head](https://www.jpkc.com/db/cheatsheets/files-text/head/) – die ersten Zeilen oder Bytes einer Datei anzeigen
- [tail](https://www.jpkc.com/db/cheatsheets/files-text/tail/) – die letzten Zeilen einer Datei anzeigen oder live mitlesen

