Saltar al contenido

Cómo usar el comando “grep” para buscar texto, incluidos los subdirectorios

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 /pathmientras
  • -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 que grep 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 tratar search 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 canaliza less. Para hacer less 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.

Salida de ejemplo

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, reemplazando con 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *