¿Cómo hago (no-gnu-) grep ignorar los files binarys?

Oye, estoy en un server HP-UX aquí. Cuando recursivamente grepping un tree de directory, tengo problemas cuando el tree también contiene files binarys: grep los trata como files de text y muestra líneas muy largas que contienen una gran cantidad de caracteres no imprimibles. Esto no sólo hace que la salida sea difícil de escanear, sino que a menudo hace que mi terminal sea inutilizable (y graba strings divertidas en su título).

GNU-grep tiene una opción --binary-file= que ayudaría (y no imprime la línea de coincidencia de todos modos para los files binarys), pero no tengo GNU-tools availabe.

¿Existe una manera de simular el comportamiento de GNU-grep o ignorar files que parecen ser binarys?

Por cierto. si hay una manera fácil de hacer esto en Perl, que estaría bien, también.

2 Solutions collect form web for “¿Cómo hago (no-gnu-) grep ignorar los files binarys?”

Basándose en la respuesta anterior, puede utilizar el command "file" para identificar files de text y, a continuación, limitar su grep sólo a esos files. Por ejemplo:

  find dir -type f -print | xargs file | grep text | cut -f1 -d: | xargs grep "expression" 

Eso es:

  • Buscar todos los files en el directory "dir"
  • Pasar estos como arguments para "file"
  • Busque la salida de "file" que contiene la palabra "text"
  • Corte el primer campo delimitado por dos puntos y utilícelo como nombre de file
  • Buscar estos files con grep.

Esto fallará en el caso de nombres de file que contienen espacios en blanco o dos puntos, pero de lo contrario hará lo que quiera.

Puede haber una mejor manera, pero tal vez pasar todos los files a un bucle de shell, y hacer algo como lo siguiente con el command file:

 if file "$i" | grep text; then ... fi 

…?

  • Analizar y optimizar crontabs
  • En * nix, ¿cómo determinar en qué sistema de archivos se encuentra un archivo en particular?
  • Lista de variables de entorno de un process en ejecución en AIX sin límite de caracteres
  • ¿Las mejores prácticas para el propietario de contenido web de Apache? (www-data, root, user, etc?)
  • Alternativa de Unix para LDAPAdmin
  • Herramientas que un administrador Unix no puede vivir sin
  • Mapeo de dominio virtual Postfix para un nombre de usuario Linux que contiene @
  • Script PHP necesita permiso para ejecutar un command sudo con shell_exec ()
  • Usuarios de UNIX dynamics con IMAP
  • Comportamiento diferente del script localmente y sobre ssh
  • SSH no networkingirigir stdout a terminal local
  • rsync --link-dest comportamiento cuando se ejecuta como sudo
  • Desplazarse dentro de la console en Open Indiana
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.