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/不必为每个选项都指定目录了?