2010-12-10 14 views
52

Sto scrivendo uno script di bash che deve ottenere l'intestazione (primi 10 byte) di un file e quindi in un'altra sezione ottenere tutto tranne i primi 10 byte. Questi sono file binari e probabilmente avranno \0 e \n in tutti i primi 10 byte. Sembra che la maggior parte delle utilità funzioni con i file ASCII. Qual è un buon modo per raggiungere questo obiettivo?Come ottenere solo i primi dieci byte di un file binario

risposta

84

Per ottenere i primi 10 byte, come osservato già:

head -c 10 

Per ottenere tutto tranne i primi 10 byte (almeno con GNU tail):

tail -c+11 
+2

Sì. Mi è piaciuta l'idea di 'dd' ma questa opzione non richiede una modifica della dimensione del buffer, quindi funziona bene con file enormi. Grazie. – User1

26

head -c 10 fa la cosa giusta qui.

+3

È interessante che questa risposta è stata la prima, è corretta, ma gli altri hanno più upvotes. – robert

28

È possibile utilizzare il comando dd per copiare un numero arbitrario di byte da un file binario.

dd if=infile of=outfile1 bs=10 count=1 
dd if=infile of=outfile2 bs=10 skip=1 
+1

Funziona ma è piuttosto lento. Il bs di 10 sta uccidendo questi file enormi. C'è un modo più rapido per saltare i primi dieci byte? Sembra così semplice. – User1

Problemi correlati