我有一个数值模拟的结果,其中包含数百个目录,每个目录包含数百万个文本文件。
我需要将字符串 "wavelength;
" 替换为 "wavelength_bc;
",因此我尝试了以下两种方法:
find . -type f -exec sed -i 's/wavelength;/wavelength_bc;/g' {} \;
和
find . -type f -exec sed -i 's/wavelength;/wavelength_bc;/g' {} +
很不幸,上述命令需要非常长的时间才能完成(超过1小时)。
我想知道如何利用我的计算机上的核心数量(8个)加速上述命令?
我考虑使用带有-P
标志的xargs
。但我担心这样会破坏文件;所以我不知道这是否安全?
总之:
- 在使用
find
时,如何加速sed
替换? - 使用
xargs -P
并行运行是否安全?
谢谢
xargs -P
应该是完全安全的使用。 - anubhavaxargs -P sed -i [...]
中的文件列表中出现了重复,它也应该是安全的(但效率较低),但是当输入来自find
的输出时将不会出现这种重复。 - John Bollinger