我使用以下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?
答案 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
的执行量显着减少可能会显着提高效率。