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 命令按時間、大小、權限精準刪除檔案實戰

編輯:關於 Linux

find 是 Linux 最強大的檔案搜尋工具,配合 -exec 或 -delete 可實現複雜條件下的批次刪除。本文整理按時間、大小、權限、類型、擁有者等多維度條件刪除檔案的實戰指令,並說明常見陷阱。

基礎語法回顧

find [路徑] [條件] [動作]
# 常用動作:-print (預設) | -delete | -exec cmd {} \;

按時間條件刪除(最常用)

參數含義範例:刪除 /var/log 下 30 天前的 .log 檔
-mtime +n修改時間超過 n 天前find /var/log -name "*.log" -mtime +30 -delete
-mtime -n修改時間在 n 天內find /var/log -name "*.log" -mtime -7 -delete
-atime +n存取時間超過 n 天前find /home -atime +90 -delete
-ctime +n狀態改變時間超過 n 天前find /tmp -ctime +1 -delete
-mmin +n修改時間超過 n 分鐘前find /tmp -mmin +60 -delete

注意: +n 表示「大於 n」,-n 表示「小於 n」,n 表示「恰好 n」(極少用)。

按大小條件刪除

# 刪除超過 100MB 的檔案
find / -type f -size +100M -delete

# 刪除小於 1KB 的空檔/臨時檔
find /var/cache -type f -size -1k -delete

# 刪除恰好 20 bytes 的檔案
find . -name "*.c" -size 20c -delete

單位:c(bytes)、k(KB)、M(MB)、G(GB)。

按權限/擁有者/類型刪除

# 刪除權限為 640 的檔案
find /home -type f -perm 640 -delete

# 刪除屬於用戶 tom 的檔案
find / -user tom -delete

# 刪除屬於群組 www 的檔案
find /var/www -group www -delete

# 僅刪除符號連結(不刪除目標檔)
find / -type l -delete

# 僅刪除普通檔案(保留目錄)
find . -type f -name "*.tmp" -delete

組合條件進階範例

# 刪除 /data 下、屬於 www、超過 7 天、大於 10MB 的 .log 檔
find /data -user www -name "*.log" -mtime +7 -size +10M -delete

# 刪除 /tmp 下、非 root 擁有、存取超過 1 天的所有檔案
find /tmp ! -user root -atime +1 -delete

# 刪除兩種副檔名檔案
find . \( -name "*.xml" -o -name "*.sh" \) -delete

安全最佳實踐

  1. 先預覽再刪除: 執行刪除前,先跑 find ... -print 確認列表;
  2. 使用 -delete 而非 -exec rm: -delete 為原子操作,避免競態條件,效率更高;
  3. 謹慎使用根目錄 /: 建議限制搜尋深度 -maxdepth 或指定具體目錄;
  4. 備份重要資料: 生產環境刪除操作前務必備份或快照。

常見錯誤避坑

  • find . -type f -print 後直接加 -delete 會報錯 → -print 與 -delete 不能共用,若需列印改用 -exec echo {} \;;
  • 刪除目錄需加 -type d 並配合 -empty(僅空目錄)或 -exec rm -rf {} \;(非空目錄,極度危險)。

熟練 find 組合拳,讓磁碟清理精準且安全。

Copyright © Windows教程網 All Rights Reserved