我有rsyncs文件到我的NAS到下面的目錄bash腳本:刪除在bash備份腳本舊文件夾
mkdir /backup/folder_`date +%F`
我將如何去寫一個清理腳本,刪除目錄超過7天基於目錄名稱中的日期?
我有rsyncs文件到我的NAS到下面的目錄bash腳本:刪除在bash備份腳本舊文件夾
mkdir /backup/folder_`date +%F`
我將如何去寫一個清理腳本,刪除目錄超過7天基於目錄名稱中的日期?
#!/bin/bash
shopt -s extglob
OLD=$(exec date -d "now - 7 days" '+%s')
cd /backup || exit 1 ## If necessary.
while read DIR; do
if read DATE < <(exec date -d "${DIR#*folder_}" '+%s') && [[ $DATE == +([[:digit:]]) && DATE -lt OLD ]]; then
echo "Removing $DIR." ## Just an example message. Or we could just exclude this and add -v option to rm.
rm -ir "$DIR" ## Change to -fr to skip confirmation.
fi
done < <(exec find -maxdepth 1 -type d -name 'folder_*')
exit 0
我們可以實際使用的更仔細的方法,如-rd $'\0'
,-print0
和IFS=
,但我不認爲他們是真的有必要這個時候。
使用要刪除的模式創建文件夾列表,從列表中刪除要保留的文件夾,刪除其他所有文件夾。
怎麼樣一個簡單的查找:
find /backup -name 'folder_*' -type d -ctime 7 -exec rm -rf {} \;
找出今天是什麼日子,然後使用目錄名 – keyser
見模式匹配或正則表達式http://stackoverflow.com/questions/5963859/ moving-files-directories-7天以上和www.linuxquestions.org/questions/linux-general-1/bash-script-to-remove-files-older-than-3-days-462290/ – cesarse