Jul 202011
 

terminal
Articolo originale di Juan Valencia

Sebbene alcuni software di archiviazione di file ci offrono la possibilità di dividere il file, questo può essere facilmente realizzata con due comandi: split e cat.

Dividere un file con split

split ha solo bisogno delle dimensioni delle parti che vogliamo creare, e il nome del file che vogliamo dividere, ad esempio:

split -b 1024 file_to_split.bin

Se questo file è di 6 kibibytes, creerà 6 file di 1 kibibyte ciascuno, chiamati xaaxabxacxadxaexaf.



Il parametro -b è ciò che definisce la dimensione delle parti risultanti. È possibile utilizzare suffissi, o i suffissi SI KB (Kilobyte: 1000 bytes), MB (Megabyte: 1000 × 1000 byte), GB (Gigabyte: 1000 × 1000 × 1000 byte), TB, PB, EB, ZB, YB. In alternativa è possibile utilizzare il suffisso EIC K (Kibibyte: 1024 bytes), M (Mibibyte: 1024 × 1024 byte), G (gibibyte: 1024 × 1024 × 1024 byte), T, P, E, Z, Y esempio:

split -b 1K file_to_split.bin
split -b 10M file_to_split.bin
split -b 1KB file_to_split.bin
split -b 10MB file_to_split.bin

Gli esempi precedenti creerebbero parti di 1.024 byte, 10.485.760 byte, 1.000 byte e 10.000.000 byte rispettivamente.

Se non vogliamo il prefisso predefinito x, si può cambiare con l’aggiunta del nuovo prefisso dopo il nome del file che vogliamo dividere, ad esempio:

split -b 1024 file_to_split.bin a_part_

Se stiamo suddividendo un file di 6 kibibytes come nel primo esempio, si otterrebbero i file: a_part_aaa_part_aba_part_aca_part_ada_part_ae e a_part_af.

Siamo in grado di modificare la lunghezza del suffisso nel file risultanti, e possiamo scegliere tra un suffisso a base di alfabeto (default) o un suffisso numerico. Quante parti si possono creare dipende di questa due caratteristiche del suffisso. Se vogliamo mantenere la lunghezza di default pari a 2, e non utilizzare un suffisso numerico, siamo in grado di dividere un file in un massimo di 676 pezzi. Se split esaurisce i suffissi, non funziona, lasciandoci con i file creati fino al momento in cui non è riuscito a crearne dei nuovi.

Per modificare la lunghezza del suffisso utilizzare il parametro -a seguito da un numero. esempio:

split -b 1024 -a 4 file_to_split.bin

Sempre facendo riferimento al primo esempio otterremmo i file:
xaaaaxaaabxaaacxaaad,xaaae e xaaaf.

Per utilizzare un suffisso numerico utilizzare il parametro -d , naturalmente con un suffisso numerico e una lunghezza di 2 siamo in grado di dividere un file in un massimo di 100 parti. esempio:

split -b 1024 -d file_to_split.bin

Ed usando coem al solito il file del primo esempio otterremmoi file: x00x01x02x03x04 e x05.

Unire i pezzi che sono stati creati con split

Dal momento che i file creati con il comando split sono sequenziali, possiamo semplicemente utilizzare cat per unire questi file in un unico nuovo file, ad esempio:

cat x?? > file_ricostruito.bin

Il punto interrogativo agisce come un carattere jolly. Quanti punti interrogativi usiamo dipende naturalmente dalla lunghezza dei suffissi usati durante la creazione dei pezzi.

dividere un file per le linee

split inoltre ci permette di dividere un file di testo per le linee e non per le dimensioni delle parti che ne derivano. Sono sicuro che questo è stato molto utile ad un certo punto nel passato, ma non riesco a pensare ad un motivo per dividere un file di testo per le sue linee se non per scopi sperimentali o didattici, i processori di testo sono perfettamente in grado di gestire file di testo molto grandi (ottimo, pochi giorni dopo aver scritto questo ho trovato un buon uso di questa funzione, dividere lunghe liste di URL e dividere i file lunghi di MySQL completi dei comandi in modo da poterli caricare su quei sistemi web-based che non possono gestire file di grandi dimensioni, ho lasciato questa commento a fini umoristici). Tuttavia, il parametro per dividere un file di testo per le linee è -l seguito dal numero di linee. esempio:

split -l 20 file_to_split.txt

Questo creerà un file per ogni 20 righe nel file originale, così se il file ha 54 linee, sarebbero creati i file xaa (righe 1-20), xab (linee 21-40) e xac (linee 41-54).

C’è un’altra opzione in split , un mix tra dividere il file per dimensione in byte e per numero di linee. In questa modalità si specifica una dimensione massima in byte per le parti, e split si prenderà il numero massimo di linee complete in ogni parte senza superare la dimensione specificate in byte. Per questo usiamo il parametro -C seguito da un numero che rappresenta la dimensione in byte, è possibile utilizzare uno dei suffissi che sono validi per l’opzione -b . Ad esempio: Supponiamo che abbiamo un file che contiene 20 righe di 100 caratteri ciascuna, per un totale di 2000 byte, e usiamo il seguente comando:

split -C 512 file_to_split.txt

Questo ci darebbe i file: xaa (linee 1-5, dato che la sesta riga, dopo 100 caratteri, non si adatterebbe al 512 byte che abbiamo fissato come limite), xab (righe 6-10), xac (linee 11-15) e xad (linee 16-20). Ogni file avrà una dimensione di 500 byte.


Popular Posts:

Flattr this!

  4 Responses to “Dividere e unire i file dalla riga di comando”

  1. Ok, the command in “Merging the parts” is supposed to be “cat x?? > file”, right?
    But it says “cat x?? > reconstructed_file.bin” (html-code gt; instead of the greater-than-sign >)

  2. […] source This entry was posted in Computer, Linux and tagged cmd, command line, gnome-terminal, konsole, Linux, merge, split, terminal by masrust. Bookmark the permalink. […]

  3. […] Linuxaria No Comments by ivan90112 on July 23, 2011  •  Permalink Posted in Tips, […]

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*