¿Cómo seguir (a la "tail -f") un archivo binario desde el principio?

10

¿Es posible seguir un archivo binario desde el principio, a la tail -f?

Esto es útil en algunos casos, por ejemplo, si estoy scptransfiriendo un archivo a un servidor remoto y, al mismo tiempo, quiero enviarlo a otro proceso (sí, sé que puedo usar trucos ssh+ cat).

Por lo que he leído del FM, tailestá escrito teniendo en cuenta los archivos de texto.

¿Hay alguna manera simple de hacer tales operaciones usando herramientas posix estándar?

Marcus
fuente
¿Dónde dice que tailsolo se puede usar con archivos de texto?
rozcietrzewiacz
@rozcietrzewiacz En unidades más antiguas, las utilidades orientadas al texto, como las tailque no siempre hacen frente a los archivos binarios: pueden ahogarse en bytes nulos u omitir bytes perdidos después de la última línea nueva en los archivos de entrada. Los sistemas modernos hacen frente.
Gilles 'SO- deja de ser malvado'

Respuestas:

12

tailfunciona con datos binarios tan bien como con texto. Si desea comenzar desde el principio del archivo, puede usarlo tail -c +1 -f.

rozcietrzewiacz
fuente
¿Esto no funciona para nadie? Tengo un archivo binario que tiene 16 ocurrencias de una cadena que veo cuando lo uso cat bin_file | strings - -o | grep match_string, pero cuando lo hago tail -c +1 -f bin_file | strings - -o | grep match_string, no obtengo nada más allá de la novena coincidencia. También noté que los números de línea de -otodos son 1 menos en comparación con la salida de cat. Si dejo el grep apagado, obtengo los 16 partidos (mezclados con todo lo demás), así que pensé que el problema era grep, pero probé un perl one-liner y se detiene en el mismo lugar ...
hepcat72