17

Я часто пытаюсь найти файлы со следующим синтаксисом:

find . -name "filetofind"

Однако обычно это приводит к появлению большого количества строк или сообщений об ошибках (Permission denied) о папках, в которых разрешение запрещено Есть ли другой способ избежать этого спама, кроме использования sudo или расширенного поиска ошибок?

3 ответа3

23

Пытаться

find . -name "filetofind" 2>/dev/null

Это перенаправит поток вывода stderr , который используется для сообщения обо всех ошибках, включая ошибку "Отказано в доступе", на нулевое устройство.

3

Вы также можете использовать предикаты -perm и -prune чтобы избежать перехода в нечитаемые каталоги (см. Также Как удалить операторы распечатки "отказано в разрешении" из программы поиска? - Unix & Linux Stack Exchange):

find . -type d ! -perm -g+r,u+r,o+r -prune -o -name "filetofind" -print
3

Если вы хотите увидеть другие ошибки и у вас нет файлов с именем "отказано в разрешении", то это будет работать "лучше".

find . -name "filetofind" 2>&1 | grep -v 'permission denied' 

Перенаправление вывода в grep с опцией инверсии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .