在我当前目录下的所有文件中用另一个字符串替换字符串

KRB*_*KRB 30 string bash sed

如何用当前目录下的另一个字符串替换每个字符串的出现?

例如:我要替换的每次出现www.fubar.comwww.fubar.ftw.com我的当前目录下的所有文件.

从研究到目前为止,我已经提出了

sed -i 's/www.fubar.com/www.fubar.ftw.com/g' *.php
Run Code Online (Sandbox Code Playgroud)

mar*_*ton 66

您在正确的轨道上,用于find定位文件,然后sed编辑它们,例如:

find . -name '*.php' -exec sed -i -e 's/www.fubar.com/www.fubar.ftw.com/g' {} \;
Run Code Online (Sandbox Code Playgroud)

笔记

  • .方法的当前目录-即,在这种情况下,和下面的当前目录搜索.
  • 对于某些版本,sed您需要为该-i选项指定扩展名,该扩展名用于备份文件.
  • -exec选项后面是要应用于找到的文件的命令,并由分号终止,必须对其进行转义,否则shell会在传递给find之前使用它.

  • 我强烈建议在sed中使用`-i.bak`.总之,这是一个很好的解决方案.+1 (5认同)