Основна проблема використання команд на кшталт 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
команду.