Возможный дубликат:
Как удалить распечатки «Отказано в доступе» из программы поиска?
Когда я запускаю эту команду в 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 ....