linux管道参数列表太长了

时间:2014-09-17 02:55:48

标签: linux bash find pipe

我使用以下bash脚本删除超过$ days的文件。

find /home/xxx/conf_* -maxdepth 0 -mindepth 0 -type d -ctime +5 -exec rm -rf {} \; 

但是如果文件超过32000+,我会

/usr/bin/find: Argument list too long

如何将列表裁减为仅20000?

1 个答案:

答案 0 :(得分:1)

从评论到回答:

你的问题是全局扩展,但你已经在使用一个可以很好地处理任意数量的找到结果的工具,即find。因此,你应该使用glob。相反,你应该让find完成所有工作。

类似的东西:

find /home/xxx -maxdepth 1 -name 'conf_*' -type d -ctime +5 -exec rm -rf {} \;

此外,如果你的发现有-exec \+,你应该使用它:

find /home/xxx -maxdepth 1 -name 'conf_*' -type d -ctime +5 -exec rm -rf {} \+

对于如此大量的匹配目录,我认为rm的执行量显着减少可能会显着提高效率。