Como seguir (a la "tail -f") um arquivo binário desde o início?

10

É possível seguir um arquivo binário desde o início, à la tail -f?

Isso é útil em alguns casos, por exemplo, se eu estiver scpinserindo um arquivo em um servidor remoto e, ao mesmo tempo, desejar alimentá-lo para outro processo (sim, eu sei que posso usar ssh+ cattruques).

Tanto quanto eu li da FM, tailestá escrito com arquivos de texto em mente.

Existe alguma maneira simples de fazer essas operações usando ferramentas posix padrão?

Marcus
fonte
Onde se diz que tailsó pode ser usado com arquivos de texto?
rozcietrzewiacz
@rozcietrzewiacz Em unidades mais antigas, utilitários orientados a texto, como tailnem sempre lidam com arquivos binários: podem engasgar com bytes nulos ou omitir bytes perdidos após a última nova linha nos arquivos de entrada. Os sistemas modernos lidam.
Gilles 'SO- stop be evil' (

Respostas:

12

tailtrabalha com dados binários tão bem quanto com texto. Se você deseja iniciar no início do arquivo, pode usar tail -c +1 -f.

rozcietrzewiacz
fonte
Isso não está funcionando para ninguém? Eu tenho um arquivo binário que possui 16 ocorrências de uma sequência que vejo quando uso cat bin_file | strings - -o | grep match_string, mas quando o faço tail -c +1 -f bin_file | strings - -o | grep match_string, não consigo nada além da 9ª correspondência. Notei também que os números de linha de -osão todos menos 1 em comparação com a saída do gato. Se eu deixar o grep desligado, recebo todas as 16 correspondências (misturadas com todo o resto), então pensei que o problema era grep, mas tentei um one-liner perl e ele parou no mesmo lugar ...
hepcat72