我在 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 的系统上所示。-delete
find
请注意,-mmin +60
将选择其年龄(以分钟为单位)向上舍入到下一个整数的文件严格地大于 60。因此不会选择年龄在 60 到 61 分钟之间的文件。
这将删除所有文件,无论其类型如何,但请注意,它不会删除类型的文件目录如果它们不为空。另请注意,从目录中删除文件确实会更新该目录的上次修改时间,并且-delete
意味着-depth
文件已被处理前find
因此,如果从目录中删除旧文件,即使该目录在启动时已存在一个多小时,也不会被删除。
另请注意,对于类型的文件符号链接,这是符号链接本身的年龄,而不是正在考虑的符号链接目标的年龄。
仅删除常规的文件(并排除所有其他类型的文件,包括 fifo、套接字、目录、符号链接...),-type f
在-delete
.或者! -type d
考虑除以下所有类型的文件目录。