我有以下的Bash单行程序,它应该遍历文件夹中所有名为*.xml的文件,检查它们是否有以下的字符串,如果没有,就把它们重命名为$.empty。
find -name '*.xml' | xargs -I{} grep -LZ "state=\"open\"" {} | while IFS= read -rd '' x; do mv "$x" "$x".empty ; done
这个过程非常慢,当在有超过10万个文件的文件夹中运行这个脚本时,它需要远远超过15分钟才能完成。
我找不到让这个过程多线程运行的方法。
请注意,由于文件数量太多,在for循环中会出现 "参数太多 "的错误。
谁能想到解决办法?