我正在写一个bash脚本,需要删除旧文件。

它目前实现使用:

find $LOCATION -name $REQUIRED_FILES -type f -mtime +1 -delete

这将删除超过1天的文件。

然而,如果我需要一天,比如6小时前的更好的分辨率呢?有没有干净利落的方法,比如使用find和-mtime?


当前回答

您可以使用这个技巧:在1小时前创建一个文件,并使用-newer file参数。

(或者使用touch -t来创建这样的文件)。

其他回答

您可以使用这个技巧:在1小时前创建一个文件,并使用-newer file参数。

(或者使用touch -t来创建这样的文件)。

你的查找有-mmin选项吗?它可以让你测试自上次修改以来的分钟数:

find $LOCATION -name $REQUIRED_FILES -type f -mmin +360 -delete

或者可以考虑使用tmpwatch来完成相同的工作。PHJR也在评论中推荐了tmpreaper。

以下是对我有效的方法(我没有看到上面使用它)

$ find /path/to/the/folder -name '*.*' -mmin +59 -delete > /dev/null

删除所有超过59分钟的文件,同时保持文件夹完整。

如果你的"find"版本中没有"-mmin",那么"-mtime -0.041667"将非常接近"最近一小时内",所以在你的情况下,使用:

-mtime +(X * 0.041667)

如果X表示6小时,则:

find . -mtime +0.25 -ls

有效是因为24小时* 0.25 = 6小时

-mmin表示分钟。

试着看看手册页。

man find

更多类型。