gpt4 book ai didi

linux - 使用 GNU sed 和 GNU find 时如何加速替换?

转载 作者:行者123 更新时间:2023-12-04 12:14:35 25 4
gpt4 key购买 nike

我有一个由数百个目录组成的数值模拟结果;每个目录包含数百万个文本文件。
我需要用“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) 来加速上述命令?
我正在考虑使用 xargs-P旗帜。我担心这会损坏文件;所以我不知道这是否安全?
总之:
  • 如何加速 sedfind 一起使用时的替换?
  • 使用是否安全xargs -P并行运行?

  • 谢谢

    最佳答案

    xargs -P应该可以安全使用,但是您需要使用 -print0 find 的选项和管道到 xargs -0用空格或通配符处理文件名:

    find . -type f -print0 |
    xargs -0 -I {} -P 0 sed -i 's/wavelength;/wavelength_bc;/g' {}
    -P 0 xargs 中的选项将在并行模式下运行。它将为您的 CPU 运行尽可能多的进程。

    关于linux - 使用 GNU sed 和 GNU find 时如何加速替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69596279/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com