Answers:
这很容易(尽管请注意,由于创建时间仅在使用特殊工具的某些文件系统上可用,所以修改时间超过了3天):
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete
取出#
的前-delete
一旦你确定它就是找到你要删除的文件。
要让它由cron运行,我可能只是创建一个可执行脚本(#!bin/sh
在文件的第一行添加一个shebang- 并使用使其成为可执行文件chmod a+x
),然后将其放在适当的cron
目录中,例如/etc/cron.daily
或/etc/cron.weekly
。当然,您不需要更具体的时间表,并且这些目录位于发行版中。
如下所述,该-delete
选项find
不是很便携。POSIX兼容方法是:
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +
#
如果确定文件正确,请再次删除。
引用斯特凡·查泽拉斯的评论如下:
请注意,它
-exec rm {} +
具有-delete
(没有可用的)竞争条件漏洞。因此,请勿在其他人可写的目录上使用它。一些发现还具有-execdir
缓解这些漏洞的功能。
/a/b/c/[12]
,但这仅在子目录具有单个字母名称的情况下才真正合适。在bash
你可以做到的/a/b/c/{1,2}
。当然,然后必须为脚本加上一行,#!/bin/bash
或者如果您使用的是crontab,则需要确保已将其配置为使用bash
(如果不是,我不建议您进行更改)。
ksh
,bash
并且zsh
在全局变量中也有交替运算符。请注意,它-exec rm {} +
具有-delete
(没有可用的)竞争条件漏洞。因此,请勿在其他人可写的目录上使用它。一些发现还具有-execdir
缓解这些漏洞的功能。
rm -f
不处理错误默默地,从而处理与任何可能的竞争条件-exec
?
/a/b/c/
不必为每个选项都指定目录了?