我正在写一个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?
当前回答
-mmin表示分钟。
试着看看手册页。
man find
更多类型。
其他回答
以下是对我有效的方法(我没有看到上面使用它)
$ find /path/to/the/folder -name '*.*' -mmin +59 -delete > /dev/null
删除所有超过59分钟的文件,同时保持文件夹完整。
-mmin表示分钟。
试着看看手册页。
man find
更多类型。
你的查找有-mmin选项吗?它可以让你测试自上次修改以来的分钟数:
find $LOCATION -name $REQUIRED_FILES -type f -mmin +360 -delete
或者可以考虑使用tmpwatch来完成相同的工作。PHJR也在评论中推荐了tmpreaper。
按照@iconoclast在另一个答案的评论中所思考的方式,一个人可以做些什么。
使用crontab为用户或/etc/crontab创建文件/tmp/hour:
# m h dom mon dow user command
0 * * * * root /usr/bin/touch /tmp/hour > /dev/null 2>&1
然后使用这个来运行你的命令:
find /tmp/ -daystart -maxdepth 1 -not -newer /tmp/hour -type f -name "for_one_hour_files*" -exec do_something {} \;
您可以使用这个技巧:在1小时前创建一个文件,并使用-newer file参数。
(或者使用touch -t来创建这样的文件)。