Algumas implementações do utilitário grep possuem um sinalizador -I que faz com que grep ignore arquivos binários. Você também pode usar -i para fazer uma correspondência sem distinção entre maiúsculas e minúsculas e -F para corresponder a uma sequência fixa (em vez de uma expressão regular). Se você está procurando por palavras separadas, você vai querer usar -w que algumas grep implementações tem. Em seguida, para recorrer aos subdiretórios, convém usar -R para pesquisar recursivamente os arquivos e -l para obter os nomes dos arquivos que contêm correspondências do padrão. Então, gostaríamos de usar --include se tivermos o GNU grep para ver apenas arquivos com uma certa extensão.
grep -Fil -IRw --include='*.txt' 'ubuntu' /path/to/top/dir
Opções padrão usadas: -F , -i , -l .
Opções não padrão usadas (suportadas por algumas grep implementações): -w , -I , -R , --include .
Usando find e OpenBSD grep , que não tem --include e que usa --binary-files em vez de -I (o% GNUgrep também tem esse sinalizador):
find /path/to/top/dir -type f -name '*.txt' \
-exec grep -Fil -w --binary-files=without-match 'ubuntu' {} +