Pesquisando recursivamente por texto específico dentro de arquivos específicos, mas apenas em pastas específicas

1

Eu tenho uma estrutura de pastas aninhada contendo muitas pastas e arquivos.

Como faço para pesquisar dentro de arquivos por um padrão, por exemplo, "sampletext", mas apenas se o nome do arquivo corresponder a um padrão (por exemplo, pesquisar somente dentro de arquivos com extensão .txt) e finalmente o nome da pasta que contém deve corresponder a outro padrão? (por exemplo, "dados").

Tenho certeza que eu poderia escrever um script de shell para fazer isso, mas tenho certeza de que há uma linha inteligente que me ensinará coisas novas!

desde já, obrigado

jon
fonte

Respostas:

2

Já que você diz que tem uma estrutura de pastas aninhada, eu acredito *data*/*txt não vai fazer o que você precisa. Eu sugiro

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

o /dev/null está lá para forçar grep para exibir o nome do arquivo mesmo quando ele é executado em um diretório que tenha apenas um .txt arquivo nele.

Scott
fonte