Usar:
find /dir/to/search -type f | xargs file | grep text
find
le dará una lista de archivos.
xargs file
ejecutará el file
comando en cada una de las líneas de la entrada canalizada.
buscar y archivo son tus amigos aquí:
find /dir/to/search -type f -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
Esto encontrará cualquier archivo (NOTA:no encontrará sockets de directorios de enlaces simbólicos, etc., solo archivos normales) en /dir/to/search y ejecute sh -c 'archivo -b {} | texto grep &>/dev/null'; que mira el tipo de archivo y busca texto en la descripción. Si esto devuelve verdadero (es decir, el texto está en la línea), entonces imprime el nombre del archivo.
NOTA:usar el indicador -b para archivar significa que el nombre del archivo no se imprime y, por lo tanto, no puede crear ningún problema con grep . Por ejemplo, sin el -b
marcar el archivo binario gettext se detectaría erróneamente como un archivo de texto.
Por ejemplo,
[email protected]# find /bin -exec sh -c 'file -b {} | grep text &>/dev/null' \; -print
/bin/gunzip
/bin/svnshell.sh
/bin/unicode_stop
/bin/unicode_start
/bin/zcat
/bin/redhat_lsb_init
[email protected]# find /bin -type f -name *text*
/bin/gettext
Si desea buscar en archivos comprimidos, use el --uncompress
bandera para archivar. Para más información y banderas para archivar ver archivo man.