Wednesday, May 27, 2009

Shell命令行下如何查找并替换多个文件中的字符

如果你在shell命令行下,需要一种能快速查找并替换多个文件里字符的方法,
那么下面这行命令你一定要记住或者收藏起来,它能帮到你的。

find . -name '*.html' -print0 | xargs -0 perl -pi -e 's/SEARCHSTRING/REPLACESTRING/g'

注解:
*.html:表示查找所在目录下的所有扩展名为html的文件;
SEARCHSTRING:要查找搜索的字符;
REPLACESTRING:替换后的字符。

记住:如果替换的字符包括 ()[]/"'!? 等等这样的特殊字符,你必须在字符前加上反斜杠\ 。

使用举例:

1.创建一个新目录:

$ mkdir test
$ cd test

2.创建1.html,2.html两个文件,并分别输入i like china :

[root@localhost test]$ vi 1.html

按i进入输入模式,输入:

i like china

按esc键退出输入模式,输入

:wq

退出。

[root@localhost test$] vi 2.html

按i进入输入模式,输入:

you like china

按esc键退出输入模式,输入

:wq

退出。

3.运行替换命令,like感情不够强烈,呵呵,我们这里要将2个文件中的字符 like 换为 love :

[root@localhost test]$ find . -name '*.html' -print0 | xargs -0 perl -pi -e 's/like/love/g'

4.检查替换结果:

[root@localhost test]$ cat 1.html
i love china

[root@localhost test]$ cat 2.html
you love china

(the end)

No comments: