Use find / -readable -print0 | xargs -0 grep -H "some_str"
em vez de grep -r
. (Requer GNU find
, mas grep -r
é GNUish então suspeito que não seja um problema).
Mas na verdade não é tão "óbvio" que seja mais rápido; grep -r
permite que a chamada open()
descubra que você não pode lê-la, enquanto a versão find
precisa stat()
, então grep
a open()
- e a parte mais cara disso, para arquivos que não são legíveis, é o kernel que converte nomes de caminho em nós de índice do sistema de arquivos. (Na verdade, pesquisar arquivos legíveis será a maior parte do tempo de execução, para arquivos de tamanho significativo.) A abordagem mais rápida é apenas acrescentar 2>/dev/null
ao grep -r
, para que não haja perda de tempo na impressão de mensagens de erro. para retardar terminais.