Unix RedHat - Не удается исключить сообщение «Отказано в доступе» в команде «Найти» - PullRequest
0 голосов
/ 11 марта 2020

Я работаю на сервере RedHat unix и мне нужно запустить команду 'find' для поиска некоторых текстовых файлов, но когда-либо 'find' возвращает "Permission denied" для некоторого каталога.

Я искал другие подобные сообщения здесь по переполнению стека, но ни один из данных ответов не решил мою проблему.

Это команда, которую я запускаю:

    find . -name "*file_name*20200310*"

Эти вариант, который я попробовал безуспешно:

    find . -name "*file_name*20200310*" -type f

    find . -name "*file_name*20200310*" 2>/dev/null

    find . -name "*file_name*20200310*" | grep -v "Permission denied"

    find . -name "*file_name*20200310*" -nowarn   # really, this option '-nowarn' is about

предупреждение

Я красный find manual (unix 'man'), но не нашел решения .

Пожалуйста, кто-нибудь может мне помочь? Заранее спасибо.

Але.

Ответы [ 3 ]

1 голос
/ 12 марта 2020

Я нашел одно решение, войдя в ksh shell и используя 2>/dev/null в конце строки.

Это не настоящее решение, но сейчас это первое, что я могу сделать.

0 голосов
/ 17 марта 2020

… это вариант, который я попробовал без успеха:

…
    find . -name "*file_name*20200310*" | grep -v "Permission denied"
…

Я в / usr / bin / csh

To сделать эту работу с csh, мы должны использовать оператор трубы |&, который также перенаправляет stderr:

find . -name "*file_name*20200310*" |& grep -v "Permission denied"
0 голосов
/ 12 марта 2020

… это вариант, который я безуспешно попробовал:

…
    find . -name "*file_name*20200310*" 2>/dev/null
…

Я в / usr / bin / csh

2> для перенаправления стандартного потока ошибок не понимается csh.

Чтобы пропустить содержимое нечитаемых каталогов, мы можем использовать test

   -readable
          Matches  files  which  are  readable.   …

и действие

   -prune True; if the file is a directory, do not descend into it.  …

в соединении:

find . \! -readable -prune , -name "*file_name*20200310*"
...