我的情况是 /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
将在该目录中递归并自行匹配子目录。