¿Existe un comando que permita buscar una palabra clave en archivos en un directorio con extensión específica?
La cadena grep -irn "string" ./path
ofrece una búsqueda recursiva de todos los archivos del directorio ./path
. Mi requisito específico es buscar en todos los archivos ./path
con una extensión como*.h
"*.h"
comillas.foobar.h
en el directorio actual e inténtelo de nuevo.S et (activar) la sh ell opt ion
globstar
con el comandoEsto hará
**
que un componente de nombre de archivo signifique todo aquí y debajo. Entoncespath/**
significa todo en elpath
directorio y sus subdirectorios . (No necesita escribir./
aquí). Luego puede usarpara buscar todos los
.h
archivos en y debajopath
.Puede u NSET con opciones
shopt -u
.fuente
fuente
-exec
... también+
es bueno."string"
en su respuesta!Si puede instalar algo en su máquina, sugiero usar ack .
Puede hacer exactamente lo que necesita con él y mucho más. Para su caso de uso, puede hacer:
Para encontrar qué filtros de archivos son compatibles de forma nativa, ejecute el comando
ack --help=type
.fuente
¿Qué hay de este?
Explicación:
find
comandofind
comandofind
con-exec
, este es el especificador de fin de comandofuente
"*.h"
funciona Pensé que tenía que ser así'*.h'
Si está utilizando gnu grep, entonces tiene una bandera que hace exactamente lo que quiere:
aunque no creo que esté disponible en otros greps.
fuente