Si encuentras alguna incompatibilidad con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes añadir el código al trabajo final.
Solución:
seria mejor usar
grep -rl "string" /path
donde
-r
(o--recursive
) se utiliza para recorrer también todos los subdirectorios de/path
mientras-l
(o--files-with-matches
) se usa para imprimir solo los nombres de archivo de los archivos coincidentes, y no las líneas coincidentes (esto también podría mejorar la velocidad, dado quegrep
dejar de leer un archivo en la primera coincidencia con esta opción).
Si está buscando líneas que coincidan en archivos, mi comando favorito es:
grep -Hrn 'search term' path/to/files
-H
hace que se imprima el nombre del archivo (implícito cuando se buscan varios archivos)-r
hace una búsqueda recursiva-n
hace que se imprima el número de línea
path/to/files
puede ser .
para buscar en el directorio actual
Otras opciones que me parecen muy útiles:
-I
ignorar archivos binarios (complemento:-a
tratar todos los archivos como texto)-F
tratarsearch term
como un literal, no una expresión regular-i
hacer una búsqueda sin distinción entre mayúsculas y minúsculas-
--color=always
para forzar los colores incluso cuando se canalizaless
. Para hacerless
colores de soporte, necesita usar el-r
opción:grep -Hrn search . | less -r
--exclude-dir=dir
útil para excluir directorios como.svn
y.git
.
Creo que puedes usar algo como esto:
find /path -type f -exec grep -l "string" ;
Explicación de los comentarios
find
es un comando que le permite encontrar archivos y otros objetos como directorios y enlaces en subdirectorios de una ruta determinada. Si no especifica una máscara que deben cumplir los nombres de archivo, enumera todos los objetos de directorio.
-type f
especifica que debe procesar solo archivos, no directorios, etc.-exec grep
especifica que para cada archivo encontrado, debe ejecutar el comando grep, pasando su nombre de archivo como argumento, reemplazandocon el nombre de archivo
valoraciones y comentarios
Al final de la post puedes encontrar las reseñas de otros administradores, tú igualmente tienes el poder dejar el tuyo si lo crees conveniente.