在 Linux 中執行 find 時如何跳過「權限被拒絕」錯誤?

在 Linux 中執行 find 時如何跳過「權限被拒絕」錯誤?

可能的重複:
如何從查找程式中刪除「權限被拒絕」的列印輸出語句?

當我在 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/shshell。

tcsh/csh你會使用

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

相關內容