【发布时间】:2021-12-04 08:10:31
【问题描述】:
我有一个包含数百个目录的数值模拟结果;每个目录包含数百万个文本文件。
我需要用“wavelength_bc;”替换字符串“wavelength;”,所以我尝试了以下两种方法:
find . -type f -exec sed -i 's/wavelength;/wavelength_bc;/g' {} \;
和
find . -type f -exec sed -i 's/wavelength;/wavelength_bc;/g' {} +
很遗憾,上述命令需要很长时间才能完成(超过 1 小时)。
我想知道如何利用我机器上的核心数 (8) 来加速上面的命令?
我正在考虑将xargs 与-P 标志一起使用。我担心这会损坏文件;所以我不知道这是否安全?
总结:
- 与
find一起使用时如何加速sed替换? - 使用
xargs -P并行运行是否安全?
谢谢
【问题讨论】:
-
是的
xargs -P使用起来应该非常安全 -
@anubhava:谢谢!我现在正在尝试。你能写一个答案吗?
-
即使某些文件在
xargs -P sed -i [...]的输入中被多次列出,它也应该是安全的(但效率较低),尽管当输入为来自find的输出。