cron操作每小时保存一次数据库文件,并根据年,月,日和小时分配文件名
/$(date +\%m)/$(date +\%y\%m\%d\%H)_thedb.sql
这会导致存档膨胀,目标是在单独的cron操作中保留当天的最后一个文件(即删除所有小于15050923*
的文件)。
实现这一目标的有效方法是什么?
答案 0 :(得分:1)
在开始复杂的bash字符串替换之前,我建议你尝试追踪文件日期。 find
可以帮助您。
例如,要删除目录中超过5天的所有文件,您可以尝试以下操作:
find <DIR> -mtime +5 -exec rm {} \;
现在,如果<DIR>
中有子目录,您可能还希望包含选项-type f
以限制查找文件,-maxdepth 1
不搜索子目录。
如果您有一个文件并想要删除早于此的所有内容,您可以稍微修改一下:
find <DIR> -not -newer <FILE> -not -name <FILE> -exec rm {} \;
我根本不知道为什么-older
中没有find
搜索字词,这似乎很明显。
警告:我强烈建议您先删除-exec
及其后的所有内容,以检查找到的文件是否都可以删除。