代码之家  ›  专栏  ›  技术社区  ›  Michael Kristofik

命令行:在grep匹配的所有文件名中搜索和替换

  •  81
  • Michael Kristofik  · 技术社区  · 17 年前

    我试图在grep匹配的所有文件中搜索并替换一个字符串:

    grep -n 'foo' * 将以以下形式输出:

    [filename]:[line number]:[text]
    

    foo 具有 bar .

    9 回复  |  直到 5 年前
        1
  •  0
  •   jian    4 年前

    sed -i 's/foo/bar/g' *
    

    它不是递归的(它不会下降到子目录中)。对于一个很好的解决方案,在整个树中替换选定的文件,我会使用find:

    find . -name '*.html' -print -exec sed -i.bak 's/foo/bar/g' {} \;
    

    这个 *.html 是文件必须匹配的表达式 .bak 之后 -i g -print