89

我有一个日志文件目录,其中包含 82000 个文件和目录(大约一半)。

我需要删除所有超过 3 天的文件和目录。

在一个包含 37000 个文件的目录中,我可以这样做:

find * -mtime +3 -exec rm {} \;

但是对于 82000 个文件/目录,我得到了错误:

/usr/bin/find:参数列表太长

如何解决此错误,以便删除所有超过 3 天的文件/目录?

4

3 回答 3

122

删除当前目录中的所有文件目录:

find . -mtime +3 | xargs rm -Rf

或者,更符合 OP 的原始命令:

find . -mtime +3 -exec rm -Rf -- {} \;
于 2013-02-06T14:14:00.377 回答
59

还可以使用:

find . -mindepth 1 -mtime +3 -delete

不删除目标目录

于 2014-06-02T18:29:03.863 回答
17

原始问题的另一种解决方案,尤其是。如果您只想删除文件夹中的一些旧文件,这很有用,就像这样:

find . -name "*.sess" -mtime +100 

等等.. 引号阻止 shell 通配符,从而允许您“找到”数百万个文件 :)

于 2014-12-03T06:28:58.433 回答