Como se livrar de erros ao executar o comando find no Linux?

3

Estou usando o seguinte comando para listar 20 arquivos grandes em um diretório. Mas junto com a listagem de arquivos, ele também mostra mensagens de erro, como permissão negada . Eu tentei adicionar 2> /dev/null , mas não parece gostar.

Este é o comando que estou usando

find . -type f -printf "%s %p\n" | sort -nr | head -n 20

Posso saber como evitar toda a mensagem de erro e exibir apenas a lista de arquivos?

    
por user196833 08.02.2013 / 23:57

1 resposta

3

No bash, 2> /dev/null iria realmente funcionar, contanto que você o adicione como parte do comando find, ou seja, antes do pipe.

Por exemplo, isso funcionará:

find -type f -printf "%s %p\n" 2> /dev/null | sort -nr | head -n 20

Com o tcsh, não há uma maneira simples de fazer o mesmo, mas o man tcsh menciona uma solução alternativa:

The shell cannot presently redirect diagnostic output without also redirecting standard output, but '(command > output-file) >& error-file' is often an acceptable workaround. Either output-file or error-file may be '/dev/tty' to send output to the terminal.

Para um comando find simples, isso fornece:

(find > /dev/tty) >& /dev/null

Ao usar pipes, em contraste com o bash, você precisa colocar > /dev/tty após o último canal para evitar a mensagem de erro Redirecionar saída ambígua. .

Isso funcionará no tcsh:

(find -type f -printf "%s %p\n" | sort -nr | head -n 20 > /dev/tty) >& /dev/null
    
por 09.02.2013 / 00:03