萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux find 指令深度解析:選項、動作、邏輯運算與實戰範例

find 是 Linux 最強大的檔案搜尋工具,支援依名稱、類型、大小、時間、權限、擁有者等多維度條件組合,並可配合 -exec/-execdir 執行後續操作。本文系統整理選項、動作、邏輯運算與大量實戰範例。

常用選項

動作

選項說明
-maxdepth N最大遞迴深度 (1=僅當前目錄, 2=含一級子目錄)
-mindepth N最小遞迴深度 (1=跳過當前目錄)
-mount / -xdev不跨越檔案系統邊界 (跳過掛載點)
-daystart時間測試以當天 00:00 為基準,而非 24 小時前
-name pattern檔案名稱匹配 (支援萬用字元 *, ?, [])
-iname pattern不分大小寫名稱匹配
-type c檔案類型: f=一般檔案 d=目錄 l=符號連結 c=字元裝置 b=區塊裝置 p=管道 s=socket
-size n[cwbkMG]檔案大小: +n 大於, -n 小於, n 精確; 單位 c=bytes, k=KiB, M=MiB, G=GiB
-mtime n修改時間: +n 超過 n 天, -n n 天內, n 正好 n 天前 (24h 為單位,搭配 -daystart 為日曆天)
-mmin n修改時間以分鐘為單位
-user name / -uid n擁有者使用者名稱/UID
-group name / -gid n所屬群組名稱/GID
-perm mode權限匹配: -mode (至少包含), /mode (任一位元), mode (精確)
動作說明
-print預設動作,列印路徑並換行
-print0列印路徑以 NULL 字元分隔 (配合 xargs -0 處理含空白檔名)
-ls類似 ls -dils 詳細資訊
-delete刪除匹配檔案 (隱含 -depth,先處理子目錄)
-exec cmd ;對每個匹配檔案執行 cmd (需以 \; 或 ';' 結尾)
-exec cmd {} +將多個檔案彙整為單一命令執行 (類似 xargs,效率更高)
-execdir cmd ;在匹配檔案所在目錄執行 cmd (安全性較高)
-ok cmd ;執行前詢問確認
-prune若為目錄則不遞入 (常搭配 -path 排除特定目錄)
-quit立即結束搜尋

邏輯運算子 (優先序高→低)

  1. ( expr ) 分組
  2. ! expr / -not expr 否定
  3. expr -a expr / expr -and expr 邏輯 AND (隱含,並列即 AND)
  4. expr -o expr / expr -or expr 邏輯 OR
  5. expr , expr 序列 (兩者皆執行,回傳第二個結果)

實戰範例精選


# 1. 找出 /var/log 下超過 100MB 的 .log 檔,顯示大小並刪除
find /var/log -name '*.log' -size +100M -ls -delete

# 2. 找出家目錄下 7 天前修改、大於 10MB 的檔案,打包備份
find ~ -mtime +7 -size +10M -exec tar -rvf backup.tar {} +

# 3. 排除 .git 目錄,搜尋專案中所有 .py 檔含有 TODO 關鍵字
find . -path './.git' -prune -o -name '*.py' -exec grep -l TODO {} \;

# 4. 找出系統中 setuid 程式 (潛在提權風險)
find / -type f -perm -4000 -ls 2>/dev/null

# 5. 清理 30 天前未存取的暫存檔
find /tmp -type f -atime +30 -delete

# 6. 將 /data 下所有目錄權限改 755,檔案改 644
find /data -type d -exec chmod 755 {} +
find /data -type f -exec chmod 644 {} +

# 7. 找出擁有者為已刪除使用者的檔案 (UID 無對應帳號)
find / -nouser -o -nogroup -ls

效能提示

  • 大量檔案系統優先使用 -maxdepth 限制範圍。
  • -exec ... + 比 -exec ... \; 快數倍 (減少 fork)。
  • 配合 xargs -0 處理 -print0 輸出,安全處理特殊檔名。
  • 避免在 / 根目錄下無條件搜尋,指定具體路徑。
copyright © 萬盛學電腦網 all rights reserved