Você deseja canalizar encontrar em xargs , que lerá corretamente os resultados de find :
find . -type f -print0 | xargs grep "hello"
Veja a página do manual xargs (1) para mais informações.
Eu preciso procurar o diretório atual e seus subdiretórios para arquivos regulares contendo as palavras: "olá"
Por que isso não funciona para mim:
find . -type f | grep "hello"
Com o comando que você está propondo, você está procurando por qualquer nome de arquivo com a string hello
em RATHER que a string hello
no conteúdo do arquivo. Use a construção abaixo:
find . -type f -exec grep -n hello /dev/null {} +
Assim, você pode usar a opção -regex
do comando find
.
find . -type f -regex ".*/.*hello.*"
.*hello.*
- corresponde aos nomes que contenham a palavra "olá".
.*/
é necessário porque o comando find
retorna o caminho completo.