【发布时间】:2021-01-22 14:56:37
【问题描述】:
我是脚本的初学者。我有一些关于旧脚本的问题,它应该删除旧的备份文件。
KEEP_FULL=7
KEEP_DAILY=14
KEEP_WEEKLY=30
DB_FULL_PATH=/Volumes/path
LAST_DAY=0
LAST_WEEK=0
LAST_MONTH=0
find $DB_FULL_PATH -type f| while read f; do
< <(stat -f %Sm -t "%m %V %d" $f) read -s MONTH WEEK DAY
if [ $DAY -eq $LAST_DAY ]; then
find $f -mtime +$KEEP_FULL | xargs rm
else if [ $WEEK -eq $LAST_WEEK ]; then
find $f -mtime +$KEEP_DAILY | xargs rm
else if [ $MONTH -eq $LAST_MONTH ]; then
find $f -mtime +$KEEP_WEEKLY | xargs rm
fi fi fi
export LAST_DAY=$DAY
export LAST_WEEK=$WEEK
export LAST_MONTH=$MONTH
done
有人可以解释一下(对于傻瓜)在while循环中发生了什么吗? 我知道对于文件夹中的每个文件,信息(创建的天、周、月)都写入 $MONTH $WEEK $DAY。 但是下面的逻辑我没理解正确。
【问题讨论】:
-
@Amessihel OS Yosemite (10.10.5) 使用 bash 命令运行;脚本名 ist test.sh: (bash test.sh)
-
@Amessihel 该脚本应该删除旧的备份文件,并且可以正常运行很长时间(不是我的)。有更好的方法吗?
标签: bash shell osx-yosemite