Usar grep -r cegamente em / não é uma boa ideia. Vários diretórios (por exemplo, /dev e /proc ) contêm arquivos especiais que não devem ser acessados de maneira descontrolada - isso pode apenas sobrecarregar sua tela com erros, esperar até o fim do mundo ou até travar o sistema.
Você precisa usar find para impedir que a pesquisa desça para esses diretórios e deixe arquivos especiais sozinhos :
-
Use opções
-pathnegadas explícitas:find / -maxdepth 2 -type f ! -path '/proc/*' ! -path '/dev/*' -exec grep "xxx" {} + -
Use a opção
-prune:find / -maxdepth 2 -path '/proc' -prune -o -path '/dev' -prune -o -type f -exec grep "xxx" {} + -
Use a opção
-xdevpara evitar a descida para outros sistemas de arquivos completamente:find / -maxdepth 2 -xdev -type f -exec grep "xxx" {} +
-type f só permite arquivos regulares. Você pode usar quantas opções -path e / ou -prune forem necessárias para ajustar a saída de find .
Observe também o uso da variação -exec ... + de -exec que chama grep com vários arquivos, em vez de lançar um processo grep separado para cada um deles.
Alternativamente, você pode usar xargs para chamar grep :
find / -maxdepth 2 -xdev -type f -print0 | xargs -r -0 grep "xxx"
Aqui é uma resposta minha mais antiga a uma questão relacionada ...