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

Linux find 指令進階搜尋與批次處理實戰指南

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

指令用途

find 用於在目錄階層中搜尋檔案,並可對搜尋結果執行後續動作。

基本語法

find [路徑] [選項] [動作]
# 預設路徑為當前目錄,預設動作為 -print(輸出至標準輸出)

核心搜尋條件選項

選項功能範例
-name 模式依檔名搜尋(支援萬用字元)-name "*.log"
-user 名稱依檔案擁有者搜尋-user www
-group 名稱依群組搜尋-group developers
-mtime -n/+n依修改時間:-n 表示 n 天內,+n 表示 n 天前-mtime -7(一週內修改)
-atime -n/+n依存取時間-atime +30(30 天未存取)
-ctime -n/+n依狀態改變時間(inode 變更)
-type 類型依檔案類型:f(一般檔)、d(目錄)、l(連結)、b/c(裝置)等-type f
-size n[c/k/M/G]依大小搜尋,預設單位為 512 bytes 區塊-size +100M(大於 100MB)
-depth先處理檔案再處理目錄(適合刪除操作)
-follow追蹤符號連結指向的實際檔案
-prune排除特定目錄不搜尋-path "./tmp" -prune -o -print

邏輯運算子

  • -a:邏輯 AND(預設隱含)
  • -o:邏輯 OR
  • ! 或 -not:邏輯 NOT
  • ( ):群組條件(需跳脫 \( \))

執行動作選項

  • -print:輸出路徑(預設)
  • -exec 命令 {} \;:對每個結果執行命令,{} 為檔案路徑佔位符
  • -ok 命令 {} \;:執行前提示確認
  • -exec 命令 {} +:批次模式,將多個檔案傳遞給單一命令(效能更好)

實戰範例

需求指令
尋找當前目錄所有一般檔案並顯示詳細資訊find . -type f -exec ls -l {} \;
刪除 /home 下修改時間超過 5 天的檔案(需確認)find /home -mtime +5 -ok rm {} \;
查詢今天修改過的檔案find / -mtime -1 -exec ls -l {} \;
尋找小於 100KB 的檔案find /home -size -100k -exec ls -l {} \;
尋找副檔名 .txt 的所有檔案find ~ -name "*.txt" -ok ls -l {} \;
排除 /proc 目錄搜尋全系統find / -path "/proc" -prune -o -name "target" -print

效能提示:大量檔案刪除時,請使用 -exec rm {} + 或搭配 xargs,避免為每個檔案啟動獨立 rm 行程。

Copyright © Windows教程網 All Rights Reserved