我有一个日志文件目录,其中包含 82000 个文件和目录(大约一半)。
我需要删除所有超过 3 天的文件和目录。
在一个包含 37000 个文件的目录中,我可以这样做:
find * -mtime +3 -exec rm {} \;
但是对于 82000 个文件/目录,我得到了错误:
/usr/bin/find:参数列表太长
如何解决此错误,以便删除所有超过 3 天的文件/目录?
我有一个日志文件目录,其中包含 82000 个文件和目录(大约一半)。
我需要删除所有超过 3 天的文件和目录。
在一个包含 37000 个文件的目录中,我可以这样做:
find * -mtime +3 -exec rm {} \;
但是对于 82000 个文件/目录,我得到了错误:
/usr/bin/find:参数列表太长
如何解决此错误,以便删除所有超过 3 天的文件/目录?
删除当前目录中的所有文件和目录:
find . -mtime +3 | xargs rm -Rf
或者,更符合 OP 的原始命令:
find . -mtime +3 -exec rm -Rf -- {} \;
还可以使用:
find . -mindepth 1 -mtime +3 -delete
不删除目标目录
原始问题的另一种解决方案,尤其是。如果您只想删除文件夹中的一些旧文件,这很有用,就像这样:
find . -name "*.sess" -mtime +100
等等.. 引号阻止 shell 通配符,从而允许您“找到”数百万个文件 :)