Búsqueda recursiva de texto específico dentro de archivos específicos pero solo en carpetas específicas

Búsqueda recursiva de texto específico dentro de archivos específicos pero solo en carpetas específicas

Tengo una estructura de carpetas anidadas que contiene muchas carpetas y archivos.

¿Cómo busco un patrón dentro de archivos, por ejemplo, "texto de muestra", pero solo si el nombre del archivo coincide con un patrón (por ejemplo, solo busco dentro de archivos con extensión .txt) y finalmente el nombre de la carpeta que lo contiene debe coincidir con otro patrón? (por ejemplo, "datos").

Estoy seguro de que podría escribir un script de shell para hacerlo, ¡pero estoy seguro de que existen frases ingeniosas que me enseñarán cosas nuevas!

gracias de antemano

Respuesta1

Como dice que tiene una estructura de carpetas anidadas, creo que *data*/*txtno hará lo que necesita. yo sugiero

find . –type d –name "*data*" –exec sh –c "grep sampletext /dev/null {}/*.txt" \;

Está /dev/nullahí para forzar grepla visualización del nombre del archivo incluso cuando se ejecuta en un directorio que solo tiene un .txtarchivo.

información relacionada