Linux
刪除文件名日期超過 7 天的文件
所以我備份伺服器上的所有文件都命名為archive-2021-03-18.zip、archive-2021-03-19.zip等。我想設置一個cronjob來刪除名稱超過7天的文件.
請問有人可以幫助我嗎?
與
zsh
:#! /bin/zsh - zmodload zsh/datetime || exit cd /path/to/backups || exit strftime -s oldest_to_keep archive-%F.zip $(( EPOCHSECONDS - 7 * 24*60*60 )) rm -f archive-<->-<1-12>-<1-31>.zip(Ne['[[ $REPLY < $oldest_to_keep ]]'])
也許這可以更優雅地完成,但我只是一個簡單的人。此腳本還將偶然發現包含新行的文件名(我一生中從未遇到過):
$ cat archive_cleaner.sh #! /bin/bash age="7 days ago" find . -iname 'archive*zip' | while read name; do bname=`basename "$name"` bdate=`echo "$bname" | sed 's/archive-//;s/.zip//'` agemax=`date -d "$age" +%s` || exit 1 agesrc=`date -d "$bdate" +%s` || exit 2 if [ $agesrc -lt $agemax ]; then echo /bin/rm -v "$name" fi done $ pwd /tmp/test $ find . -type f ./1/2/3/archive-2021-04-08.zip ./1/2/3/archive-2021-04-07.zip ./1/2/3/archive-2021-04-10.zip ./1/2/3/archive-2021-04-14.zip ./1/2/3/archive-2021-03-19.zip ./1/2/3/archive-2021-03-18.zip $ archive_cleaner.sh /bin/rm -v ./1/2/3/archive-2021-04-08.zip /bin/rm -v ./1/2/3/archive-2021-04-07.zip /bin/rm -v ./1/2/3/archive-2021-03-19.zip /bin/rm -v ./1/2/3/archive-2021-03-18.zip
刪除第 11 行中的“echo”以實際刪除文件。