Como remover mensagens de erro ao pesquisar recursivamente por uma string?

3

eu uso

find -type f -print0 | xargs -0 -n 10 grep -i searchstring

para pesquisar recursivamente por uma string. Mas também me dá mensagens de erro como "permissão negada". Como posso evitar essas mensagens de erro e ver apenas os resultados?

    
por alwbtc 20.06.2012 / 07:55

2 respostas

8

Redirecionar erro padrão para / dev / null. Ou seja,

find -type f -print0 2>/dev/null | xargs -0 -n 10 grep -i searchstring 2>/dev/null
    
por 20.06.2012 / 08:02
0

Se as mensagens de erro forem encontradas (por exemplo, porque há um diretório que você não pode percorrer, redirecione seus erros para /dev/null .

find -type f -print0 2>/dev/null | …

Se as mensagens de erro vierem do grep (por exemplo, porque alguns arquivos são ilegíveis), redirecione seus erros para /dev/null ou passe a opção -s para dizer que ignora arquivos ilegíveis.

xargs -0 grep -s -i searchstring /dev/null

Não faz sentido limitar o número de arquivos passados juntos para grep . Mas você deve adicionar /dev/null para que grep sempre veja pelo menos dois arquivos, caso contrário grep omite o nome do arquivo em sua saída se tiver apenas um argumento de arquivo. Com o GNU grep ou o Busybox (por exemplo, Linux ou Cygwin), você pode usar a opção -H .

    
por 21.06.2012 / 01:34