Pesquisa recursiva de texto específico dentro de arquivos específicos, mas apenas em pastas específicas

Pesquisa recursiva de texto específico dentro de arquivos específicos, mas apenas em pastas específicas

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

Como faço para pesquisar dentro de arquivos um padrão, por exemplo, "texto de amostra", mas apenas se o nome do arquivo corresponder a um padrão (por exemplo, pesquisar apenas 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 de que poderia escrever um script de shell para fazer isso, mas tenho certeza de que existem frases inteligentes que me ensinarão coisas novas!

desde já, obrigado

Responder1

Já que você diz que tem uma estrutura de pastas aninhadas, acredito que *data*/*txtnão fará o que você precisa. Eu sugiro

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

Existe /dev/nullpara forçar grepa exibição do nome do arquivo mesmo quando ele é executado em um diretório que contém apenas um .txtarquivo.

informação relacionada