我有一个像这样命名的每日备份:
yyyymmddhhmm.zip // pattern
201503200100.zip // backup from 20. 3. 2015 1:00
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个脚本来删除超过 3 天的所有备份。该脚本还应该能够删除文件夹中与模式不匹配的所有其他文件(但脚本中会有一个开关来禁用它)。
为了确定文件年龄,我不想使用备份时间戳,因为其他程序也会对文件进行操作,并且可能会被篡改。
在以下帮助下:删除 UNIX 中超过 5 天的文件(文件名中的日期,而不是时间戳) 我得到:
#!/bin/bash
DELETE_OTHERS=yes
BACKUPS_PATH=/mnt/\!ARCHIVE/\!backups/
THRESHOLD=$(date -d "3 days ago" +%Y%m%d%H%M)
ls -1 ${BACKUPS_PATH}????????????.zip |
while read A DATE B FILE
do
[[ $DATE -le $THRESHOLD ]] && rm -v $BACKUPS_PATH$FILE
done
if [ $DELETE_OTHERS == "yes" ]; then
rm ${BACKUPS_PATH}*.* // but I don't know how to not-delete the files matching pattern
fi
Run Code Online (Sandbox Code Playgroud)
但它一直在说:
rm: missing operand
Run Code Online (Sandbox Code Playgroud)
问题出在哪里以及如何完成脚本?