Основная проблема с использованием команд типа head
или tail
состоит в том, что они ориентированы на строки, а двоичные файлы - нет. Если в них есть новые строки, они часто не используются для представления конца строки, и если они есть, они могут быть просто частью строк, таких как программные сообщения или поля данных.
Если данные структурированы каким-либо образом, вы должны принять это во внимание при выборе точек разделения, чтобы не разбивать структуры в середине.
Если вы знаете структуру файла, вы можете использовать такую команду, как
dd -if input-file -of output-file ...
с параметрами, позволяющими копировать в файл только столько блоков данных определенного размера, начиная с определенного (увеличенного) смещения.
Похоже, что split
команда, упомянутая @egmont, автоматизирует этот процесс для вас, но она по умолчанию ориентирована на строки, поэтому вам придется указать дополнительные параметры, например, указать размер --bytes count
каждого фрагмента файла. быть.
В качестве примечания: если вы не знаете, что находится в файле, но подозреваете, что он содержит хотя бы некоторые значимые текстовые данные, эта strings
команда является отличным способом первого взгляда, чтобы увидеть, с чем вы имеете дело.
strings -n 6 file | less
найдет все серии печатных символов длиной не менее шести символов и отобразит их в пейджере, чтобы они не пролетали над терминалом. Использование числа, немного превышающего значение по умолчанию из 4 символов, помогает исключить крошечные фрагменты данных, которые просто могут быть напечатаны, но не используются таким образом в файле.
Если вам позже потребуется более подробно изучить файл с помощью бинарного редактора, например hexedit
, у вас будут некоторые ориентиры, указывающие, где можно найти что-то интересное.
strings
имеет опцию - t x
которая будет предшествовать каждой напечатанной строке с ее смещением в файл в шестнадцатеричном формате (o для восьмеричного / d для десятичного), чтобы вы знали, где ее найти позже Даже с очень короткими файлами приходится иметь дело, когда нужно смотреть на них символ за символом.
split
команду.