如何在 cronjob 上删除超过 1 小时的特定文件?

如何在 cronjob 上删除超过 1 小时的特定文件?

我在 Ubuntu 20.04 上使用 cronjob。我想自动删除超过 1 小时的文件,并且只有文件名以 master-stdout.log* 开头的文件

我怎样才能做到这一点?

find /root/logs/ * -mmin +60 -exec rm {} \;

答案1

master-stdout.log要删除名称以 开头且在过去一小时内未修改的文件,请在 下递归/root/logs/

LC_ALL=C find /root/logs/ -name 'master-stdout.log*' -mmin +59 -delete

这里使用GNU 的-mmin和扩展,如 Ubuntu 和其他基于 GNU 的系统上所示。-deletefind

请注意,-mmin +60将选择其年龄(以分钟为单位)向上舍入到下一个整数的文件严格地大于 60。因此不会选择年龄在 60 到 61 分钟之间的文件。

这将删除所有文件,无论其类型如何,但请注意,它不会删除类型的文件目录如果它们不为空。另请注意,从目录中删除文件确实会更新该目录的上次修改时间,并且-delete意味着-depth文件已被处理find因此,如果从目录中删除旧文件,即使该目录在启动时已存在一个多小时,也不会被删除。

另请注意,对于类型的文件符号链接,这是符号链接本身的年龄,而不是正在考虑的符号链接目标的年龄。

仅删除常规的文件(并排除所有其他类型的文件,包括 fifo、套接字、目录、符号链接...),-type f-delete.或者! -type d考虑除以下所有类型的文件目录

相关内容