LinuxMastery By asdlkfj

LinuxMastery 12: 尋找檔案 find 與 locate

檔案到底在哪裡?

Linux 檔案系統龐大,有時候我們會忘記檔案存在哪,或者需要批量找出符合特定條件 (如 7 天前修改過) 的檔案。這時就需要 findlocate

核心指令詳解

  1. locate

    • 用途:極速搜尋檔案名稱。
    • 原理:它搜尋的是系統建立的資料庫 (mlocate.db),而不是即時掃描硬碟,所以速度極快。
    • 缺點:如果檔案剛建立,資料庫還沒更新,會找不到。可以用 updatedb 指令手動更新。
    • 範例
      locate nginx.conf
      
  2. find

    • 用途:強大但稍慢的即時搜尋,支援各種條件。
    • 語法find [路徑] [條件] [動作]
    • 常用條件
      • -name "*.log":依檔名搜尋。
      • -type f:只找檔案;-type d:只找目錄。
      • -size +100M:找大於 100MB 的檔案。
      • -mtime +7:找 7 天前修改過的檔案 (-7 是 7 天內)。
    • 進階動作 -exec
      這是 find 最強大的功能,可以對找到的檔案執行指令。
      # 找出 /var/log 下 30 天前的 log 檔並刪除
      find /var/log -name "*.log" -mtime +30 -exec rm {} \;
      
      注意 {} 代表找到的檔名,\; 是指令結束符號。

實戰心法

當硬碟空間滿了,想找出是哪些大檔案在佔空間時,可以用:

find / -type f -size +500M

這會列出整個系統中所有超過 500MB 的檔案,讓你快速定位「吃硬碟怪獸」。