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' {} +