合 Linux批量替换多个文件的内容
方法一
使用perl ,命令如下:
1 | find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' |
下面这个例子就是将当前目录及所有子目录下的所有pom.xml文件中的”http://repo1.maven.org/maven2“; 替换为”http://localhost:8081/nexus/content/groups/public“;.
1 | find ./ -name 'pom.xml' | xargs perl -pi -e 's|http://repo1.maven.org/maven2|http://localhost:8081/nexus/content /groups/public|g' |
这里用到了Perl语言,
perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码.
从命令行中使用Perl 能够帮助实现一些强大的、实时的转换。认真研究正则表达式,并正确地使用,将会为您省去大量的手工编辑工作。
1 | find -name 'pom.xml' | xargs perl -pi -e 's|http://repo1.maven.org/maven2|http://localhost:8081/nexus/content/groups/public|g' |
示例:
1 | find ./ -name "*.html" | xargs perl -pi -e 's|content="xiaomaimiao">|content="xiaomaimiao"><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2809207751643838" crossorigin="anonymous"></script>|g' |
方法二
使用sed命令如下:
1 | sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录` |