2013-08-26 103 views
1

我有rsyncs文件到我的NAS到下面的目錄bash腳本:刪除在bash備份腳本舊文件夾

mkdir /backup/folder_`date +%F` 

我將如何去寫一個清理腳本,刪除目錄超過7天基於目錄名稱中的日期?

+0

找出今天是什麼日子,然後使用目錄名 – keyser

+0

見模式匹配或正則表達式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

回答

0
#!/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'-print0IFS=,但我不認爲他們是真的有必要這個時候。

0

使用要刪除的模式創建文件夾列表,從列表中刪除要保留的文件夾,刪除其他所有文件夾。

0

怎麼樣一個簡單的查找:

find /backup -name 'folder_*' -type d -ctime 7 -exec rm -rf {} \;