Linux

刪除超過 30 天的文件的腳本

  • December 20, 2012

Shell 腳本不應刪除* root dir* 下的任何文件。我的*路徑將類似於 /export/home/ftp/ …

我做了一些研究,找到了使用 find 和 exec 命令從特定路徑查找和刪除超過 30 天的文件的方法。

*查找/export/home/ftp/ -type f -mtime +30 -exec rm -f {} ;

但根據要求,我只想從該目錄中刪除 console.log 和 server.log 並排除剩餘的文件。

請幫我解決這個問題。

假設您確實需要使用find才能通過子目錄進行遞歸:

find /export/home/ftp \( -name console.log -or -name server.log \) -mtime +30 -exec rm -f {} +

如果您只需要每月刪除舊的 server.log 和 console.log,您也可以使用logrotate很可能已經在 RHEL 下執行的那個。像這樣的配置片段將適用於/etc/logrotate.d/*.conf配置文件位於系統上的任何位置。

# rotate server.log and console.log every month
# delete, not compress, old file

/export/home/ftp/server.log /export/home/ftp/console.log {
   monthly
   rotate 0
}

如上所述,自定義的每月 cron 也可以很好地工作。實際上,由於 logrotate 是從 cron 執行的,因此您可以將其視為某種 cron 擴展。HTH。

引用自:https://serverfault.com/questions/212751