Linux find 指令完整使用範例

Linux find 指令完整教學|檔案搜尋、批次操作與進階實務案例

Linux 系統管理與維運中,find 是最常用的檔案搜尋工具之一,可依檔名、大小、修改時間、權限、使用者等條件快速搜尋,對自動化維運與排錯非常重要。

📊 find 指令常見使用情境

find 指令常用於系統維運與自動化管理,以下是最常見的實務場景:

  • 清理舊 log 檔案(/var/log)
  • 搜尋大檔案(磁碟空間不足排查)
  • 清除 /tmp 暫存檔
  • 批次修改檔案權限(chmod / chown)
  • 搭配 crontab 自動化清理
  • 結合 grep 進行日誌分析

📌 Linux 相關指令教學

學習 Linux 基本指令是伺服器管理的核心能力,能有效提升系統操作效率與維運穩定性。

常見必學指令包含檔案管理、權限設定、服務管理與系統監控等,是 Linux Server Security 的基礎。

find 指令基本語法與參數

find [搜尋路徑] [條件] [動作]
參數用途範例
-name依檔名搜尋find . -name “*.log”
-type依檔案類型搜尋find /home -type f
-size依檔案大小搜尋find / -size +1G
-mtime依修改時間搜尋find /var/log -mtime +30
-user依擁有者搜尋find /home -user root
-iname忽略大小寫搜尋find . -iname “*.LOG”
-empty搜尋空檔案或空目錄find /path -type f -empty
-delete直接刪除搜尋結果find /tmp -type f -mtime +7 -delete
-exec對搜尋結果執行指令find . -name “*.log” -exec rm {} \;

實務案例:清理舊檔、打包與搜尋錯誤

案例一:清理 30 天前 log 檔


find /var/log -name "*.log" -mtime +30 -delete  # 搜尋 /var/log 中超過 30 天的 log 並刪除

案例二:搜尋大檔案並打包


find /home -type f -size +100M -print0 | tar --null -cvf bigfiles.tar --files-from=-  # 將 /home 超過 100MB 的檔案打包

案例三:搜尋 log 內錯誤訊息


grep -r "ERROR" /var/log --include="*.log"  # 找出所有 log 中包含 ERROR 的行

案例四:搜尋空檔案或空目錄


find /tmp -type f -empty       # 搜尋空檔案
find /tmp -type d -empty       # 搜尋空目錄

案例五:搜尋並批次修改權限


find /project -type f -name "*.sh" -exec chmod +x {} +   # 將所有 sh 檔案設為可執行

在 Linux 網站搬家後, 常會遇到網站權限錯誤、無法執行或檔案無法讀取的情況, 這時就能搭配 find 指令批次修正網站權限與檔案設定。

此外,在使用 SCP、RSYNC 或 tar 備份網站前, 也建議先利用 find 搜尋空檔案、快取與大型備份資料, 避免同步不必要的內容。

exec 與 xargs 說明與排程自動化

當我們搜尋到一堆檔案,想對它們做操作時可以用 execxargs

方式說明範例
exec 對每個找到的檔案「逐一執行」指令(\;),或使用 + 批次執行。
find . -name "*.log" -exec rm {} +
xargs 先把找到的檔案收集起來「批次一次執行」指令,速度快,需搭配 -print0 避免空白問題。
find . -name "*.log" -print0 | xargs -0 rm

自動化排程範例

每天自動清理 /tmp 超過 7 天的檔案:


#!/bin/bash
# cleanup.sh
find /tmp -type f -mtime +7 -delete

加入 crontab:


0 3 * * * /scripts/cleanup.sh  # 每天凌晨 3 點自動執行

🔗 find 在系統管理中的延伸應用

find 常搭配其他 Linux 工具使用,例如排程、自動化維運與安全管理:

FAQ 常見問題

find 與 locate 有什麼差別?

find 直接搜尋檔案系統,結果最準確;locate 使用資料庫搜尋速度快,但可能不是最新檔案。建議排錯或自動化維運時使用 find。

如何搜尋空檔案?

使用 find /path -type f -size 0 搜尋空檔案。

如何搜尋空目錄?

使用 find /path -type d -empty 搜尋空目錄。

如何搜尋大於 1GB 的檔案?

使用 find / -size +1G 搜尋大檔案。

如何安全刪除搜尋結果?

先使用 -print 查看搜尋結果,再使用 -delete,避免誤刪重要檔案。

find 與 grep 如何搭配使用?

使用 grep -r "ERROR" /var/log --include="*.log" 可找出 log 中錯誤訊息。

搜尋速度慢怎麼辦?

縮小搜尋範圍,避免從 / 根目錄開始搜尋,可搭配 xargs 提升效率。

如何搜尋並批次修改檔案權限?

使用 find /project -type f -name "*.sh" -exec chmod +x {} + 可以一次修改多個檔案權限。