¿Cómo puedo hacer grep de forma recursiva, pero sólo en archivos con determinadas extensiones?

Resuelto Jasmine asked hace 12 años • 12 respuestas

Estoy trabajando en un script para grepciertos directorios:

{ grep -r -i CP_Image ~/path1/;
grep -r -i CP_Image ~/path2/;
grep -r -i CP_Image ~/path3/;
grep -r -i CP_Image ~/path4/;
grep -r -i CP_Image ~/path5/; }
| mailx -s GREP [email protected]

¿Cómo puedo limitar los resultados solo a extensiones .hy .cpp?

Jasmine avatar Sep 20 '12 23:09 Jasmine
Aceptado

Simplemente use el --includeparámetro, así:

grep -inr --include \*.h --include \*.cpp CP_Image ~/path[12345] | mailx -s GREP [email protected]

Eso debería hacer lo que quieras.

Para tomar la explicación de la respuesta de HoldOffHunger a continuación:

  • grep: dominio

  • -r: recursivamente

  • -i: ignorar caso

  • -n: cada línea de salida está precedida por su número de línea relativo en el archivo

  • --include \*.cpp: todos los archivos *.cpp: C++ (escape con \ en caso de que tenga un directorio con asteriscos en los nombres de los archivos)

  • ./: Comienza en el directorio actual.

Nelson avatar Sep 20 '2012 16:09 Nelson

Algunas de estas respuestas parecían tener demasiada sintaxis o produjeron problemas en mi servidor Debian. Esto funcionó perfectamente para mí:

grep -r --include=\*.txt 'searchterm' ./

...o versión que no distingue entre mayúsculas y minúsculas...

grep -r -i --include=\*.txt 'searchterm' ./
  • grep: dominio

  • -r: recursivamente

  • -i: ignorar caso

  • --include: todos *.txt: archivos de texto (escape con \ en caso de que tenga un directorio con asteriscos en los nombres de los archivos)

  • 'searchterm': Qué buscar

  • ./: Comienza en el directorio actual.

Fuente: PHP Revolution: ¿Cómo grep archivos en Linux, pero solo ciertas extensiones de archivo?

HoldOffHunger avatar Feb 08 '2016 22:02 HoldOffHunger