Algumas implementações do comando grep , como o GNU grep , podem reciclar diretórios por conta própria. Se você está procurando por "blahblah", você pode fazer isso:
$ grep -r "blahblah" .
Isto irá grep através de todos os arquivos e diretórios começando recursivamente no diretório atual, . (cuidado com algumas implementações, como versões antigas do GNU grep também seguirão links simbólicos ao descer a árvore de diretórios). Isso mostrará os nomes dos arquivos e o resultado que correspondeu ao padrão de pesquisa, um por linha. Se você quiser apenas os nomes de arquivos sem o conteúdo correspondente, adicione a opção -l a grep .
$ grep -rl "blahblah" .
Se você realmente quiser usar find , pode usar a capacidade de find de executar comandos em relação aos arquivos que encontrar, usando a opção -exec .
$ find . -type f -exec grep "blahblah" {} +
O + no final é a chave, pois determinará o número ideal de nomes de arquivos que find localiza e chamará grep carregando a linha de comando com quantos couberem. Esses nomes de arquivos serão colocados onde as chaves estão, {} . É mais fácil visualizar o que está fazendo, se substituirmos o comando echo no lugar de grep você verá o que quero dizer.
Exemplo
Digamos que eu tenha os dados de amostra a seguir.
$ mkdir -p dir{1..3}
$ touch file{1..3}
$ touch dir{1..3}/file{A..C}
Agora, quando eu executo o comando find acima usando echo como nosso grep :
$ find . -type f -exec echo {} +
./file2 ./file1 ./dir2/fileA ./dir2/fileB ./dir2/fileC ./dir3/fileA ./dir3/fileB ./dir3/fileC ./file3 ./dir1/fileA ./dir1/fileB ./dir1/fileC
Todos esses arquivos foram ecoados na tela por um único echo , portanto, este método é muito eficiente em chamar apenas echo ou grep apenas o número mínimo de vezes necessário, passando quantos nomes de arquivos puder para cada um.
Usando -type f acima, estamos pesquisando apenas em arquivos regulares , enquanto grep geralmente procuraria em todos os arquivos como fifos, sockets, devices (mas não necessariamente symlinks). Você pode passar uma opção -D skip para algumas versões de grep para evitar procurar dispositivos / sockets / fifos.