split to narzędzie z pakietu GNU coreutils, które tnie jeden plik na wiele mniejszych kawałków — po zadanej liczbie bajtów, linii albo na określoną liczbę części. Przydaje się, gdy masz gigantyczny log, dump bazy albo plik, który nie mieści się na nośniku czy w limicie załącznika, a chcesz go rozbić i później skleić z powrotem. Efektem jest zestaw plików wyjściowych o nazwach typu xaa, xab, xac (domyślny prefiks to x), a oryginał zostaje nietknięty.
Składnia i najważniejsze opcje
Podstawowa forma: split [OPCJE] PLIK [PREFIKS]. Jeśli podasz PREFIKS, kawałki dostaną nazwy zaczynające się od niego zamiast od x.
-b, --bytes=ROZMIAR— dziel po zadanej liczbie bajtów; ROZMIAR przyjmuje sufiksy, np.K=1024,M,G(orazKB,MBw potęgach 1000).-l, --lines=LICZBA— dziel po zadanej liczbie linii na plik (domyślne zachowanie to 1000 linii).-n, --number=CZĘŚCI— podziel na dokładnie N części;l/Nnie łamie linii w środku,r/Nrozdaje linie round-robin.-d, --numeric-suffixes— użyj sufiksów liczbowych (00,01…) zamiast liter.-a, --suffix-length=N— ustaw długość sufiksu (domyślnie 2 znaki).--additional-suffix=SUFIKS— dokleja stałą końcówkę do nazw, np..txt.--filter=POLECENIE— zamiast zapisywać pliki, przepuść każdy kawałek przez potok do polecenia (zmienna$FILE).
Przykłady użycia
split -b 100M backup.tar archiwum_— tniebackup.tarna kawałki po 100 MB o nazwacharchiwum_aa,archiwum_ab…split -l 1000 dane.csv czesc_— dzieli plik na paczki po 1000 linii, wygodne przy imporcie porcjami.split -n 5 duzy.log log_part_— rozbija plik na dokładnie 5 części o zbliżonym rozmiarze.split -d -a 3 --additional-suffix=.txt raport.txt r_— daje nazwyr_000.txt,r_001.txtitd.split -b 50M --filter='gzip > $FILE.gz' dump.sql part_— od razu kompresuje każdy kawałek, bez zapisu wersji nieskompresowanej.
Częste błędy i pułapki
Sklejanie: split nie ma trybu „scal”. Kawałki łączysz zwykłym cat archiwum_* > backup.tar — kolejność sortowania alfabetycznego robi tu za spinacz, więc nie ruszaj nazw sufiksów.
Za mało sufiksów: domyślne dwie litery dają maksimum 676 plików (aa–zz). Przy bardzo drobnym cięciu split się wyłoży komunikatem o wyczerpaniu sufiksów — ratuje -a z większą liczbą znaków.
macOS vs Linux: na macOS domyślny split to wersja BSD, która nie zna -n, --additional-suffix ani --filter. Jeśli potrzebujesz wariantu GNU, zainstaluj coreutils przez Homebrew i wołaj gsplit.
Bajty vs linie: -b potrafi rozciąć linię (a nawet znak wielobajtowy UTF-8) w połowie. Do plików tekstowych, gdzie linie muszą zostać całe, używaj -l albo -n l/N.
Powiązane komendy: cat (sklejanie kawałków), csplit (dzielenie po wzorcu/kontekście), dd, head, tail oraz wc -l do policzenia linii przed podziałem.