Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux find 指令大全:50+ 實用範例與參數完整速查表

編輯:關於 Linux

find 是 Linux 系統管理與開發自動化的核心工具。本文彙整 50+ 實戰範例,涵蓋名稱、時間、大小、權限、擁有者、類型、深度、動作執行等全維度用法,並提供參數分類速查表、輸出格式控制、現代替代工具對比,作為桌邊速查手冊。

參數分類速查表

路徑與搜尋範圍控制

參數功能
路徑搜尋起始目錄,. 當前,/ 根目錄,可多路徑
-maxdepth N最大遞迴深度
-mindepth N最小深度(跳過前 N-1 層)
-mount / -xdev不跨越檔案系統掛載點
-follow追蹤符號連結
-daystart時間以當天 00:00 為基準

檔案屬性測試條件

類別參數說明
名稱-name 模式檔名匹配(區分大小寫)
-iname 模式檔名匹配(忽略大小寫)
-path 模式完整路徑匹配
時間-mtime n/-n/+n修改時間:正好/內/前 n 天
-atime n/-n/+n存取時間
-ctime n/-n/+n狀態改變時間
-mmin/-amin/-cmin分鐘精度
大小-size n[c/k/M/G]大小:正好/+/-, 單位 c=bytes
-empty空檔案或空目錄
權限-perm 模式精確權限匹配
-perm -模式至少包含該權限位
-perm /模式任一權限位匹配
擁有者-user 名稱/UID檔案擁有者
-group 名稱/GID所屬群組
-nouser無對應用戶 (UID 不在 /etc/passwd)
-nogroup無對應群組
類型-type f/d/l/b/c/p/s一般/目錄/連結/區塊/字元/FIFO/Socket
-xtype針對符號連結目標類型
-links n硬連結數

邏輯運算與動作

類別參數說明
邏輯( expr )群組(需轉義 \( \))
! / -not expr邏輯非
-a / -and邏輯與(隱性可省略)
-o / -or邏輯或(必須顯式)
動作-print列印路徑(預設,換行分隔)
-print0Null 分隔(配合 xargs -0)
-ls詳細列表(ls -lids 格式)
-exec cmd {} \;每檔執行一次命令
-exec cmd {} +批次傳遞參數執行
-ok cmd {} \;每檔詢問確認
-delete直接刪除(深度優先,效率最高)
-printf 格式自訂輸出格式
-fprintf 檔案 格式輸出至檔案
-quit找到第一個匹配即退出

50+ 實戰範例分類彙總

基礎名稱搜尋


find ~ -name "*.txt" -print                    # 家目錄找 .txt
find . -name "[A-Z]*" -print                     # 大寫開頭
find /etc -name "host*" -print                   # host 開頭
find . -name "[a-z][a-z][0-9][0-9].txt" -print   # 兩字母兩數字

權限與擁有者


find . -perm 755 -print                          # 精確 755
find . -perm -007 -exec ls -l {} \;              # 全域可讀寫執行 (等同 777)
find . -user cnscn -print                        # 屬於用戶
find . -uid +501 -print                          # UID > 501
find . -group cnscn -print                       # 屬於群組
find . -nouser -print                            # 無擁有者
find . -nogroup -print                           # 無群組

時間與大小


find /home -mtime -2 -print                      # 2天內修改
find /home -atime -1 -print                      # 1天內存取
find /home -mmin +60 -print                      # 60分鐘前修改
find /home -amin +30 -print                      # 30分鐘前存取
find /home -newer tmp.txt -print                 # 比 tmp.txt 新(修改時間)
find /home -anewer tmp.txt -print                # 比 tmp.txt 新(存取時間)
find /home -used -2 -print                       # 修改後2天內被存取
find . -size +1000000c -print                    # > 1MB
find . -size 100c -print                         # = 100 bytes
find . -size +10 -print                          # > 10 區塊 (5120 bytes)

類型與深度


find . -type d -print                            # 所有目錄
find . ! -type d -print                          # 非目錄
find . -type l -print                            # 符號連結
find /home -name tmp.txt -maxdepth 4 -print      # 最大深度 3 層
find /home -name tmp.txt -mindepth 3 -print      # 從第 2 層開始
find /home -empty -print                         # 空檔/空目錄

動作執行經典模式


# 刪除 .svn 目錄
find . -name ".svn" -exec rm -rf {} \;
find . -name ".svn" -exec rm -rf {} +            # 批次更快
find . -name ".svn" -delete                      # 最快(需支援)

# 檢查 /etc/passwd 是否存在用戶
find /etc -name "passwd*" -exec grep "cnscn" {} \;

# 批次修改權限
find . -name "yao*" | xargs chmod o-w
find . -name "yao*" -exec chmod o-w {} +

# 備份配置檔
find . -name "yao*" | xargs file
find . -name "yao*" | xargs echo "" > /tmp/core.log

# cpio 磁帶備份
cd /
find etc home apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0

系統級搜尋常用單行


find / -amin -10      # 10分鐘內被存取
find / -atime -2      # 48小時內被存取
find / -empty         # 空檔/空目錄
find / -group cat     # 屬於群組 cat
find / -mmin -5       # 5分鐘內修改
find / -mtime -1      # 24小時內修改
find / -nouser        # 無擁有者
find / -user fred     # 屬於用戶 fred

輸出格式控制:-printf 進階用法


# 格式化輸出:路徑 大小 修改時間 權限 擁有者
find . -type f -printf "%p %s %TY-%Tm-%Td %TH:%TM %M %u\n"

# 常用格式符
%p  路徑      %f  檔名      %h  目錄部分
%s  大小bytes %k  大小KiB   %b  區塊數
%T@ 時間戳    %TY-%Tm-%Td  年-月-日  %TH:%TM  時:分
%M  權限符號  %m  權限八進制  %u  擁有者名  %g  群組名
%i  inode     %l  連結目標    %n  硬連結數

現代替代工具快速對比

工具定位核心優勢適用場景
find檔案屬性搜尋系統預裝、功能最全、腳本標準自動化腳本、系統管理、複雜邏輯
fd檔案名搜尋預設忽略 .gitignore、平行、彩色、語法簡潔互動式開發、專案內快速定位
ripgrep (rg)檔案內容搜尋極速、支援 .gitignore、正則豐富、編碼自動偵測程式碼搜尋、日誌分析、內容檢索
locate/plocate檔案名快速定位資料庫索引、毫秒級、需 updatedb 更新全系統檔名查詢、非即時需求

效能優化黃金法則

  1. 優先縮小路徑範圍: find /var/log 優於 find /
  2. 加上 -mount: 避免掃描 /proc /sys /run 網路掛載
  3. 用 -maxdepth 限制深度: 避免深層遞迴
  4. 批次動作用 -exec + 或 -delete: 避免 -exec \; 啟動大量進程
  5. xargs -P 平行處理: find . -name "*.log" -print0 | xargs -0 -P4 gzip

將本文作為 find 指令的桌邊速查手冊,遇到搜尋需求先查參數表、再找相似範例改造。熟練掌握「測試條件→邏輯組合→動作執行」三段式思維,配合現代工具 fd/rg 分工協作,能將檔案搜尋效率提升數個數量級。

Copyright © Windows教程網 All Rights Reserved