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



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

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

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

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

在您以复杂的bash字符串替换开始之前,我建议您尝试在文件日期之后。find可以为您提供帮助。

例如,要删除超过5天的目录中的所有文件,您可以尝试这样的事情:

find <DIR> -mtime +5 -exec rm {} ;

现在,如果<DIR>中有子目录,您可能还需要包括选项-type f以将发现限制为文件,而-maxdepth 1则不搜索子目录。

如果您有一个文件并想删除比这更古老的所有内容,则可以稍微修改以下内容:

find <DIR> -not -newer <FILE> -not -name <FILE> -exec rm {} ;

我根本不知道为什么find中没有-older搜索词,这似乎很明显。

警告:我强烈建议您先删除-exec和所有之后的所有内容,以检查是否可以删除其发现的文件。

最新更新