En el día de hoy tenemos algo interesante que puede ser de gran utilidad. ¿Qué sucede si deseamos encontrar todos los archivos en Linux que contengan en su interior un texto del tipo string?

find / -type f -exec grep -H ‘texto-a-buscar-aqui’ {} \;

Pero no siempre esta combinación funciona en todas las distribuciones de Linux, así que un método más efectivo es utilizar:

grep -rnw ‘directorio’ -e “pattern”

Donde tenemos:

-r : Es la forma recursiva.
-n : Es el número de línea.
-w : Marca la coincidencia con la palabra completa.
-l : Letra L puede ser agregada para tener simplemente el nombre del archivo.

Si queremos hacer una búsqueda eficiente debemos utilizar el parámetro –exclude o –include, de la siguiente forma:

grep –include=\*.{c,h} -rnw ‘directorio’ -e “pattern”

grep –exclude=*.o -rnw ‘directorio’ -e “pattern”

De esta forma tendremos solo los archivos en el caso del include que contengan la extensión .c o .h; mientras que en el ejemplo de exclude se está omitiendo la extensión o.

Pero esto no termina aquí también es posible incluir o excluir directorios:

grep –exclude-dir={dir1,dir2,*.dst} -rnw ‘directorio’ -e “pattern”

(Visitado 784 veces, 1 visitas hoy)