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

Linux 檔案搜尋實戰:locate 與 find 指令深度解析與比較

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

Linux 尋找檔案最常用的兩大工具 locate 與 find,雖同為搜尋,但運作機制、速度、適用場景截然不同。搞懂差異,才能在對的場合用對工具。

核心差異一覽

特性locatefind
搜尋來源預建索引資料庫 /var/lib/mlocate即時掃描實體檔案系統
速度極快(毫秒級)較慢(視目錄大小)
即時性非即時(每日自動更新一次)完全即時
新建檔案找不到(需 updatedb)立刻可搜尋到
已刪檔案可能仍會出現不會出現
支援條件僅檔名/路徑模糊比對支援權限、大小、時間、類型、擁有者等豐富條件

locate 指令詳解

# 格式
locate [選項] 模式

# 常用選項
-i   忽略大小寫
-r   使用正則表達式

# 範例:找出以 pwd 結尾的路徑
locate -r 'pwd$' | grep -n 'pwd$'

手動更新索引:updatedb(讀取 /etc/updatedb.conf 設定,掃描硬碟重建 /var/lib/mlocate)

find 指令詳解

# 格式
find [路徑] [條件] [動作]

# 常用條件
-name "*.log"        # 檔名模式
-type f              # 類型:f=檔案 d=目錄 l=連結
-size +10M           # 大於 10MB
-mtime -7            # 7 天內修改過
-user root           # 擁有者
-perm 644            # 權限

實戰範例

# 1. 找 /var 下 7 天內修改過、屬主非 root 的檔
find /var -mtime -7 ! -user root -ls

# 2. 找 /home 下大於 100MB 的一般檔案
find /home -type f -size +100M -exec ls -lh {} \;

# 3. 找無擁有者/群組且近期被存取的檔(清理孤兒檔)
find / -atime -7 \( -nouser -o -nogroup \) -ls

選擇建議

  • 快速模糊找檔名 → locate(記得先 updatedb)
  • 精確條件、即時性、需後續處理 → find(配合 -exec、xargs)

兩工具互補,而非互斥。掌握兩者特性,檔案搜尋不再盲目。

Copyright © Windows教程網 All Rights Reserved