请教:我想在一个目录下的所有文件中查找s1,并替换为s2

请教:我想在一个目录下的所有文件中查找s1,并替换为s2

我想在一个目录下的所有文件中查找字符串1,并替换为字符串2,命令行该怎么写呢

包含指定目录中的所有子目录.

谢谢
用vim。
1)cd 目录
2)vim *
3):argdo %s/str1/str2/g | update
楼上的兄弟,我怎么没看明白啊,解释一下吧,不好意思 :-(
[code:1]
perl -pe 's/string1/string2/g' /path/*[/code:1]
sed -n -e 's/str1/str2/gp' /path/*
此条命令只能显示目录下文件中替换的内容,不可显示下一级目录中文件的替换情况,而且只是显示替换,并没有正真替换,有没有高手来重写一下,完成上面中我说的两个不足之处!
补充一下,最好在#($)后的命令中完成,不要用VI命令进入文本操作,写SHELL脚本也可以!
麻烦各位大虾喽!
[quote:5ca83589e4="kornlee"][code:1]
perl -pe 's/string1/string2/g' /path/*[/code:1][/quote]
这样直接用perl直接修改文件:
[code:1]
perl -pi -e 's/string1/string2/g' $(find /path -type f)[/code:1]
请大家都解释一下自己命令的意思好么,另外,最好可以通过命令行直接完成 .
谢谢了
似乎最为正统的办法是sed吧。不过可能要编一个小程序了,因为sed的输出好像必须用重定向。
[quote:328d88a572="helloworldd"]请大家都解释一下自己命令的意思好么,另外,最好可以通过命令行直接完成 .
谢谢了 [/quote]
我写的就是在命令行下直接运行即可,用perl直接修改文件,不用重定向的!