sábado, 14 de mayo de 2011

Comando para encontrar archivos de forma recursiva buscando por una cadena de texto

Este es uno de mis comando favoritos. Usando la habilidad de find para ligarse con otro, en este caso grep, podemos buscar en un directorio por todos los archivos que contengan cierta cadena de texto:

$ find ruta_directorio -exec grep -li 'texto' {} \; -exec grep -ni 'texto' {} \;

En el primer grep usamos -l para listar los archivos, en el segundo usamos -n para mostrar la línea en la que está la ocurrencia del texto.
La opción -i sirve para ignorar diferencia entre mayúsculas y minúsculas.

Yo suelo usarlo filtrando el tipo de archivo:

$ find ruta_directorio -name "*.php" -exec grep -li 'texto' {} \; -exec grep -ni 'texto' {} \;

Simplemente maravilloso!