使用 find 命令删除目录集,而不会遇到参数列表太长的情况

使用 find 命令删除目录集,而不会遇到参数列表太长的情况

我的情况是 /tmp 目录中至少有 25,000 - 50,000 个目录。我正在尝试使用以下命令删除该目录中超过 2 天的目录。

find /path/to/tmp/* -type d -ctime +2 -delete

但我一直遇到参数列表太长的错误。如何具体限制删除目录的数量?我也尝试使用 maxdepth 1 选项,但这似乎不起作用。

答案1

您可以删除它,*因为它将返回所有内容,这就是导致出现该错误的原因。

尽管 MacOS 会记录文件或文件夹的创建时间,但 Linux 不会记录文件或文件夹的创建时间。

命令中的ctime +2会导致它查找并删除在两天多前发生过任何更改(访问时间除外)的目录。这包括权限、所有权的更改或已更改的目录名称。它不会根据目录的创建日期/年龄对目录执行任何操作。

答案2

除非您需要排除点目录,否则*那里是不必要的。使用 时*,shell 将通配符扩展到该目录中的所有文件和目录,并将它们作为参数传递给find,从而导致参数长度问题。如果没有它,find将在该目录中递归并自行匹配子目录。

相关内容