删除超过 3 年的文件

Remove Files older than 3 years

我需要删除目录中超过 2 年的所有文件。保留最新文件并删除旧文件非常重要。

我已经搜索并找到了这个。

find /path/to/files* -mtime +365 -exec rm {} \;

我可以只乘这个数吗?

find /path/to/files* -mtime +1095 -exec rm {} \;

有没有办法添加一个开关,在删除文件名时将其打印到屏幕上?以确保它正在做我期望的事情?

我也发现了这个:

find /rec -mtime +365 -print0 | xargs -0 rm -f

两者有很大区别吗?这个比那个好吗?我读过的内容说 xargs 更快。我可以将 mtime 数乘以第二年或第三年吗?

最后,我能否将代码按原样放入每天 运行 的 cron 作业中?

谢谢!

Can I just multiply the number?

find /path/to/files -mtime +1095 -exec rm {} \;

是的。并在删除之前“回显”

find /path/to/files -mtime +1095 -print

然后版本-exec rm {} \;删除文件(当你准备好了)。

find /path/to/files* -mtime +1095 -exec rm {} \;

这应该可以正常工作,您可以 运行 通过简单地列出命令找到的文件来 运行 干 运行:

find /path/to/files* -mtime +1095 -exec ls {} \;

为了安全起见,我还会添加一个 -type 以确保其他内容不会被删除:

find /path/to/files* -type f -mtime +1095 -exec rm {} \;

回答你问题的第二部分。

是的,使用 -exec 或 xargs 有很大的不同。 -exec 为找到的每个文件启动一个新的 rm 进程。这会产生大量开销,如果您删除大量文件,会严重降低系统速度。

xargs 只根据需要创建尽可能多的 rm 进程,因为它会创建一个包含尽可能多的文件的命令行。所以只创建了几个rm进程。

但是两者都比-delete好,因为delete是unsave