Как пропустить ошибки «отказано в доступе» при запуске find в Linux?

Как пропустить ошибки «отказано в доступе» при запуске find в Linux?

Возможный дубликат:
Как удалить распечатки «Отказано в доступе» из программы поиска?

Когда я запускаю эту команду в Linux (SuSE):

find / -name ant

Я получаю много сообщений об ошибках следующего вида:

find: `/etc/cups/ssl': Permission denied

Нужно ли findаргументировать, чтобы не показывать эти ошибки и попробовать только те файлы, к которым у меня есть разрешение на доступ?

решение1

вы можете отфильтровать сообщения на stderr. Я предпочитаю перенаправлять их на , stdoutнапример, так.

 find / -name art  2>&1 | grep -v "Permission denied"

Объяснение:

Короче говоря, весь обычный вывод отправляется на стандартный вывод ( stdout). Все сообщения об ошибках — на стандартный вывод ошибок ( stderr).

grepобычно находит/выводит указанную строку, инвертирует -vее, поэтому находит/выводит каждую строку, котораяне делаетсодержат "Отказано в доступе". Все выходные данные команды find, включая сообщения об ошибках, обычно отправляемые в stderr(файловый дескриптор 2), теперь передаются в stdout(файловый дескриптор 1) и затем фильтруются командой grep.

Предполагается, что вы используете bash/shоболочку.

Под tcsh/cshвы бы использовали

 find / -name art |& grep ....

Связанный контент