Как следовать (а-ля «tail -f») бинарному файлу с самого начала?


10

Можно ли следовать бинарному файлу с самого начала, а-ля tail -f?

Это полезно в некоторых случаях, например, если я scpзагружаю файл на удаленный сервер, и в то же время я хочу передать его другому процессу (да, я знаю, что могу использовать ssh+ catтрюки).

Насколько я читал с FM, tailнаписано с учетом текстовых файлов.

Есть ли простой способ сделать такие операции, используя стандартные инструменты posix?


Где сказано, что tailможно использовать только с текстовыми файлами?
rozcietrzewiacz

@rozcietrzewiacz В старых версиях текстовые утилиты, такие как tail, не всегда справляются с двоичными файлами: они могут задушить нулевые байты или пропустить случайные байты после последней новой строки во входных файлах. Современные системы справляются.
Жиль "ТАК - перестань быть злым"

Ответы:


12

tailработает с двоичными данными так же, как с текстом. Если вы хотите начать в самом начале файла, вы можете использовать tail -c +1 -f.


Это не работает ни для кого? У меня есть двоичный файл, в котором есть 16 вхождений строки, которые я вижу, когда использую cat bin_file | strings - -o | grep match_string, но когда я делаю tail -c +1 -f bin_file | strings - -o | grep match_string, я ничего не получаю после 9-го совпадения. Я также отметил, что номера строк из -oвсех на 1 меньше по сравнению с выводом cat. Если я оставлю grep выключенным, я получу все 16 совпадений (смешанных со всем остальным), поэтому я подумал, что проблема в grep, но я попробовал perl с одним вкладышем, и он остановился в том же месте ...
hepcat72
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.