Iya*_*rek 4 linux gnu sed find xargs
我有由数百个目录组成的数值模拟结果;每个目录包含数百万个文本文件。
wavelength;我需要用“ ”替换字符串“ wavelength_bc;”,所以我尝试了以下两种方法:
find . -type f -exec sed -i 's/wavelength;/wavelength_bc;/g' {} \;
Run Code Online (Sandbox Code Playgroud)
和
find . -type f -exec sed -i 's/wavelength;/wavelength_bc;/g' {} +
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的命令需要很长时间才能完成(超过 1 小时)。
我想知道如何利用我的机器上的核心数量 (8) 来加速上述命令?
我正在考虑与标志xargs一起使用-P。我担心这会损坏文件;所以我不知道这是否安全?
总之:
sed使用 with 时如何加速替换find?xargs -P使用并行运行安全吗?谢谢
xargs -P使用起来应该是安全的,但是您需要使用-print0选项find和管道xargs -0来寻址带有空格或通配符的文件名:
find . -type f -print0 |
xargs -0 -I {} -P 0 sed -i 's/wavelength;/wavelength_bc;/g' {}
Run Code Online (Sandbox Code Playgroud)
-P 0选项xargs将在并行模式下运行。它将为您的 CPU 运行尽可能多的进程。
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |