我正在写一个bash脚本,需要删除旧文件。
它目前实现使用:
find $LOCATION -name $REQUIRED_FILES -type f -mtime +1 -delete
这将删除超过1天的文件。
然而,如果我需要一天,比如6小时前的更好的分辨率呢?有没有干净利落的方法,比如使用find和-mtime?
我正在写一个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 -name $log_prefix"*"$log_ext -mmin +$num_mins -exec rm -f {} \;
如果你的"find"版本中没有"-mmin",那么"-mtime -0.041667"将非常接近"最近一小时内",所以在你的情况下,使用:
-mtime +(X * 0.041667)
如果X表示6小时,则:
find . -mtime +0.25 -ls
有效是因为24小时* 0.25 = 6小时
对于 SunOS 5.10
Example 6 Selecting a File Using 24-hour Mode
The descriptions of -atime, -ctime, and -mtime use the ter-
minology n ``24-hour periods''. For example, a file accessed
at 23:59 is selected by:
example% find . -atime -1 -print
at 00:01 the next day (less than 24 hours later, not more
than one day ago). The midnight boundary between days has no
effect on the 24-hour calculation.