【问题标题】:How can I recursively replace a string with another in many files using bash?如何使用 bash 在许多文件中递归地用另一个字符串替换一个字符串?
【发布时间】:2013-04-06 21:21:48
【问题描述】:

我需要编写一个脚本,在一个目录及其所有子目录中的所有文件中将某个字符串的所有出现替换为“replaceWithThisNewString”。 怎么办?

【问题讨论】:

    标签: bash


    【解决方案1】:

    试试这条线:

    find /aDir -type f |xargs sed -i 's/certainString/replaceWithThisNewString/g'
    

    【讨论】:

    • Ḧm,如果走xargs 路线,为了安全起见,我会使用find .... -print0 | xargs -0 ...。
    【解决方案2】:
    find /path/to/dir -type f -exec sed -i 's/original/replacement/g' {} \+
    

    或者如果您的find 不支持\+:

    find /path/to/dir -type f -exec sed -i 's/original/replacement/g' {} \;
    

    【讨论】:

      【解决方案3】:

      使用:

      shopt -s globstar # if not already enabled
      sed -i '/certainString/s/certainString/replaceWithThisNewString/g' **
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 2018-05-19
        • 2011-07-01
        • 2019-03-21
        • 2019-05-14
        • 1970-01-01
        相关资源
        最近更新 更多