SPLIT

La funzione del comando split e’ splittare e quindi dividere un file, in piu’ piccoli file.
Poniamo che abbiamo un file di 5000 righe

[[email protected]]$ for l in $(seq 5000) ; do> echo ” riga numero$l” >> textfile.txt
>done

Quello che si e’ appena creato con un ciclo for e’ un file txt di 5000 righe

Possiamo constatarlo con

$wc -l textfile.txt
fornisce come risultato
5000 textfile.txt

Posso anche entrare con vi textfile.txt. Il che mi restituira’ un file di 5000 righe. Nella realta’ tale file potrebbe essere anche un log abbastanza grande, e lo vogliamo dividere in tanti file piu’ piccoli, di n righe ciascuno, di default la divisione sara’ di 1000 righe ciascuno.

Quindi:
[[email protected]]$ split textfile.txt

verranno creati 5 file da 1000 ricghe ciascuno: xaa; xab; xac; xad; xae.
E cioe’:
[[email protected]]$ wc -l *
5000 textfile.txt
1000 xaa
1000 xab
1000 xac
1000 xad
1000 xae
10000 totale
La sintassi generale del comando split è la seguente:

split [opzioni] [–] [file [prefisso ] ]
Il parametro facoltativo file specifica il nome del file da cui leggere i dati. Se non specificato, o se è un trattino (-), split legge i dati provenienti dallo standard input.

Il parametro facoltativo prefisso specifica un prefisso da usare per i nomi dei file scritti. Se non specificato, viene usato il prefisso x.

Il doppio trattino — (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.

Il comportamento predefinito prevede di usare suffissi di due caratteri ed una dimensione massima di 1000 linee di testo per ogni file.

Tra le opzioni principali vi sono:

-a num
Genera i nomi dei file usando un suffisso con un numero di caratteri pari a num.
-b num[suffisso]
Specifica la dimensione massima in byte di ciascun file. È possibile indicare la dimensione anche in KiB e MiB specificando rispettivamente i suffissi k e m.
-l num
Specifica la dimensione massima in linee di testo di ciascun file.
La versione GNU di split supporta inoltre le seguenti opzioni:

-C num[suffisso]
Specifica la dimensione massima in byte di ciascun file, evitando però di spezzare le linee di testo.
-d
Genera i nomi dei file usando dei suffissi numerici invece che alfabetici.

ESEMPI
Divide il file elenco.txt in più file con prefisso elenco.txt_ e dimensione massima di 10 linee ciascuno:

split -l 10 elenco.txt elenco.txt_
Divide il file backup.bin in più file con prefisso backup_ e dimensione massima di 2 GiB ciascuno:

split -b 2048m backup.bin backup_
Concatena tramite il comando cat i file divisi con split, in modo da riottenere il file originale:

cat backup_* > backup1.bin