Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux find 指令隱藏「Permission denied」錯誤訊息的方法

編輯:Linux 系統常見問題解答

問題情境

使用 find 遞迴搜尋檔案時,若遇到無權限存取的目錄(如家目錄下的 .gconf、.cache 等),終端會大量輸出 Permission denied 錯誤,嚴重干擾正常結果閱讀。

錯誤訊息亂碼的成因

原文展示的亂碼(?ƒé™???¤Ÿ)實為 Permission denied 在 zh_CN.UTF-8 語系下因終端字型缺失或編碼轉換錯誤導致的顯示異常。切換至英文語系即可正常顯示:

export LANG="en_US.UTF-8"

標準解法:重導向標準錯誤輸出

將 stderr 導向 /dev/null 即可靜默所有錯誤訊息:

find . -name "*.log" 2>/dev/null
  • 2>:重導向檔案描述符 2(標準錯誤)
  • /dev/null:黑洞裝置,丟棄所有寫入資料

進階用法:僅顯示特定錯誤或記錄日誌

  • 保留錯誤到檔案供事後分析:
    find / -name "target.txt" 2>find_errors.log
  • 只隱藏「Permission denied」而保留其他錯誤(需搭配 grep -v):
    find / -name "*.conf" 2>&1 | grep -v "Permission denied"

補充:以 root 權限執行避免權限問題

若系統允許,使用 sudo find ... 可繞過大多數權限限制,但需謹慎操作以免誤刪系統關鍵檔案。

Copyright © Windows教程網 All Rights Reserved