Il problema principale nell'uso di comandi come head
o tail
è che sono orientati alla linea e i file binari no. Se contengono righe, spesso non vengono utilizzate per rappresentare la fine di una riga e, se lo sono, potrebbero far parte di stringhe come messaggi di programma o campi di dati.
Se i dati sono strutturati in qualche modo, devi tenerne conto nella scelta dei punti di divisione in modo da non rompere le strutture nel mezzo.
Se conosci la struttura del file, puoi usare un comando come
dd -if input-file -of output-file ...
con opzioni per copiare solo tanti blocchi di dati di una dimensione specifica a partire da un determinato offset (incrementato) nel file.
Sembra che il split
comando come menzionato da @egmont automatizzerà questo processo per te, ma sembra essere orientato alla linea per impostazione predefinita, quindi dovrai specificare ulteriori opzioni in modo da --bytes count
dirgli quanto deve essere grande ogni parte del file essere.
Come nota a margine, se non sai cosa c'è in un file, ma sospetti che contenga almeno alcuni dati testuali significativi, il strings
comando è un ottimo modo per dare una prima occhiata per vedere con cosa hai a che fare.
strings -n 6 file | less
troverà tutte le serie di caratteri stampabili lunghi almeno sei caratteri e li visualizzerà in un cercapersone in modo che non volino sul terminale. L'uso di un numero un po 'più grande del valore predefinito di 4 caratteri aiuta a eliminare piccoli frammenti di dati che sono semplicemente stampabili, ma non vengono utilizzati in questo modo nel file.
Se in seguito dovessi esplorare il file in modo più dettagliato con un editor binario come hexedit
, avrai alcuni punti di riferimento che indicano dove potrebbe essere trovato qualcosa di interessante.
strings
ha un'opzione - t x
che precederà ogni stringa stampata con il suo offset nel file in esadecimale (o per ottale / d per decimale) in modo da sapere dove trovarlo in seguito. Anche i file molto brevi hanno molto a che fare quando devi guardarli carattere per carattere.
split
comando.