bash删除小于字符串值的文件

时间:2015-05-09 10:28:30

标签: bash crontab

cron操作每小时保存一次数据库文件,并根据年,月,日和小时分配文件名

/$(date +\%m)/$(date +\%y\%m\%d\%H)_thedb.sql

这会导致存档膨胀,目标是在单独的cron操作中保留当天的最后一个文件(即删除所有小于15050923*的文件)。

实现这一目标的有效方法是什么?

1 个答案:

答案 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及其后的所有内容,以检查找到的文件是否都可以删除。