You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash环境下大目录批量删除指定文件的性能优化求助

Bash环境下大目录批量删除指定文件的性能优化求助

我现在遇到一个头疼的问题:需要在包含50万个文件的超大目录里批量删除指定文件,目录里的文件命名都是这种格式:

  • Fiche_8317.doc
  • Fiche_8318.doc
  • Fiche_8319.doc

我手里有一个deletedFiles.txt文件,里面记录了需要删除的文件对应的信息,每行是分号分隔的,格式示例如下:

AAA;ZQ;00008319;2011-05-18;ACTA;RR02000354090127104747.doc
AAA;ZQ;00008320;2011-05-18;ACTA;RR02000354090127104747.doc
AAA;ZQ;00008321;2011-05-18;REDA;RR02000354090127104747.doc
AAA;ZQ;00008322;2011-05-18;ITAC;RR02000354090127104747.doc

我写了一段循环代码来处理这件事(变量名做了调整,不是真实代码):

while IFS=";" read -r idt surname
do
    Echo $idt " " $surname
    # 去掉前导零并执行删除
    find $DataPath/target/ -type f -name Fiche_"$((10#$idt))".* -delete
done < <(cut -d ";" -f 3,6 $DataPath/*deletedFiles.txt)

这段代码确实能完成删除操作,但速度慢得让人崩溃——在我的Linux服务器上,每个文件的删除操作要花2分钟以上!而且我确认每个ID在目录里只对应一个文件,不存在重复的情况。

想请教大家有没有能提升速度的优化方案?我需要更快的解决办法。另外公司的调度器只支持Bash,所以必须用Bash来实现。非常感谢!

备注:内容来源于stack exchange,提问作者Batavia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:30:31