刪除30天前的檔案

前言

透過簡單的linux shell刪除特定天數條件的檔案

ref link: https://tecadmin.net/delete-files-older-x-days/

:::success 1.刪除超過 30 天的文件 ::: 您可以使用find 命令搜索所有修改超過 X 天的文件。如果需要,也可以在單個命令中刪除它們。

首先,列出/opt/backup 目錄下所有超過30 天的文件。

find /opt/backup -type f -mtime +30 

驗證文件列表並確保上面的命令中沒有列出有用的文件。確認後,您可以使用以下命令刪除這些文件。

find /opt/backup -type f -mtime +30 -delete

:::success 2.刪除具有特定擴展名的文件 ::: 除了刪除所有文件,您還可以添加更多過濾器來查找命令。例如,您只需要刪除擴展名為“.log”的文件並在 30 天前修改。

為了安全起見,首先進行試運行並列出符合條件的文件。

find /var/log -name "*.log" -type f -mtime +30

驗證列表後,通過運行以下命令刪除這些文件: find /var/log -name "*.log" -type f -mtime +30 -delete

以上命令將僅刪除具有 .log 擴展名且上次修改日期早於 30 天的文件。

:::success 3.遞歸刪除舊目錄 :::

-delete如果目錄不為空,則使用該選項可能會失敗。在這種情況下,我們將使用 Linux rm 和find

以下命令將搜索 /var/log 目錄下 90 天之前修改的所有目錄。

find /var/log -type d -mtime +90

在這裡,我們可以使用-exec命令行選項執行 rm 命令。查找命令輸出將作為輸入發送到 rm 命令。

find /var/log -type d -mtime +30 -exec rm -rf {} \;

:::info 警告:在刪除目錄之前,請確保沒有刪除有用的目錄。有時父目錄修改日期可能比子目錄更舊。在這種情況下,遞歸刪除也可以刪除子目錄。 :::

撰寫於 2021-09-08