按年龄删除文件

按年龄删除文件

有没有一个命令可以删除一个目录下所有没有修改过的文件天?我需要清理一些旧日志。

答案1

这将删除所有超过 5 天的文件,您也可以-name '*log'在其中放置一个以更精确,并且您可能还想maxdepth在 find 命令中指定 a。

find /some/dir -type f -mtime +5 -delete

答案2

zsh(.m+n) 全局限定符.仅选择常规文件,m+n选择修改超过的文件n几天前;
例如列出当前目录中9天前修改过的文件:

print -rl -- *(.m+9)

添加D以包含点文件:

print -rl -- *(D.m+9)

或者如果您想递归(并仅列出以 结尾的文件.log):

setopt extendedglob
print -rl -- **/*.log(.m+9)

如果您对结果满意,则替换print -rl为;rm尽管如果您有很多文件,您可能必须使用zargs(以避免参数列表太长):

autoload zargs
zargs ./**/*(.m+9) -- rm

相关内容