我需要运行grep几百万个文件。因此,我尝试按照此处提到的两种方法加快速度:xargs -P -n和GNU parallel。我在我的文件子集(数量为 9026)上尝试了这个,结果如下:
随着xargs -P 8 -n 1000,非常快:
$ time find tex -maxdepth 1 -name "*.json" | \
xargs -P 8 -n 1000 grep -ohP "'pattern'" > /dev/null
real 0m0.085s
user 0m0.333s
sys 0m0.058s
Run Code Online (Sandbox Code Playgroud)随着parallel,非常慢:
$ time find tex -maxdepth 1 -name "*.json" | \
parallel -j 8 grep -ohP "'pattern'" > /dev/null
real 0m21.566s
user 0m22.021s
sys 0m18.505s
Run Code Online (Sandbox Code Playgroud)甚至顺序xargs比parallel: …