【发布时间】:2018-09-23 07:37:27
【问题描述】:
我的 /tmp 目录中至少有 25,000 - 50,000 个目录。我正在尝试使用以下命令删除该目录中超过 2 天的目录。
find /path/to/tmp/* -type d -ctime +2 -delete
但是我一直遇到参数列表太长的错误。如何具体限制要删除的目录数量?我也尝试使用 maxdepth 1 选项,但这似乎不起作用。
【问题讨论】:
我的 /tmp 目录中至少有 25,000 - 50,000 个目录。我正在尝试使用以下命令删除该目录中超过 2 天的目录。
find /path/to/tmp/* -type d -ctime +2 -delete
但是我一直遇到参数列表太长的错误。如何具体限制要删除的目录数量?我也尝试使用 maxdepth 1 选项,但这似乎不起作用。
【问题讨论】:
* glob 使 shell 扩展所有目录名称并将它们传递给 find。摆脱它,让find 完成工作,而不是外壳。
find /path/to/tmp/ -mindepth 1 -type d -ctime +2 -delete
-mindepth 1 确保 find 将只处理子目录,而不是 /path/to/tmp 本身。
如果这些目录不为空,您需要将-delete 切换为rm -r。
find /path/to/tmp/ -mindepth 1 -type d -ctime +2 -exec rm -r {} +
【讨论】:
/path/to/tmp/.x 不会被删除,而在您的情况下它将被删除。也许这对 OP 来说没有问题,但我们不能确定。
rm -r 应该处理这种情况。您是否收到任何其他错误消息,表明无法删除其中一个文件?请显示您的命令的副本和结果输出。