Busca 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 arquivos dentro de um padrão, por exemplo, "sampletext", mas somente 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").

Eu tenho certeza que eu poderia escrever um script de shell para fazer isso, mas eu tenho certeza de que existem one-liners inteligentes que me ensinarão coisas novas!

Obrigado antecipadamente

    
por jon 03.01.2013 / 10:10

1 resposta

2

Como você diz que tem uma estrutura de pastas aninhada, acredito que *data*/*txt não fará 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 o grep a exibir o nome do arquivo mesmo quando executado em um diretório que tenha apenas um arquivo .txt .

    
por 03.01.2013 / 19:09