helloworldd 发表于 2004-10-11 15:08:10

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

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

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

谢谢 :mrgreen:

firemoth 发表于 2004-10-11 15:24:49

用vim。
1)cd 目录
2)vim *
3):argdo %s/str1/str2/g | update

helloworldd 发表于 2004-10-11 15:35:15

楼上的兄弟,我怎么没看明白啊,解释一下吧,不好意思 :-(

kornlee 发表于 2004-10-11 23:24:44


perl -pe 's/string1/string2/g' /path/*

jerry_cym 发表于 2004-10-12 00:19:19

sed -n -e 's/str1/str2/gp' /path/*
此条命令只能显示目录下文件中替换的内容,不可显示下一级目录中文件的替换情况,而且只是显示替换,并没有正真替换,有没有高手来重写一下,完成上面中我说的两个不足之处!

jerry_cym 发表于 2004-10-12 00:23:28

补充一下,最好在#($)后的命令中完成,不要用VI命令进入文本操作,写SHELL脚本也可以! :oops:
麻烦各位大虾喽!

kornlee 发表于 2004-10-12 00:37:13


perl -pe 's/string1/string2/g' /path/*
这样直接用perl直接修改文件:

perl -pi -e 's/string1/string2/g' $(find /path -type f)

helloworldd 发表于 2004-10-12 09:13:13

请大家都解释一下自己命令的意思好么,另外,最好可以通过命令行直接完成 .
谢谢了 :oops:

mandrakechina 发表于 2004-10-13 01:59:29

似乎最为正统的办法是sed吧。不过可能要编一个小程序了,因为sed的输出好像必须用重定向。

kornlee 发表于 2004-10-13 11:09:10

请大家都解释一下自己命令的意思好么,另外,最好可以通过命令行直接完成 .
谢谢了 :oops:
我写的就是在命令行下直接运行即可,用perl直接修改文件,不用重定向的!

姚崇铧 发表于 2004-11-17 14:52:11

如果是想替换某个目录下某种类型的文件中的内容,那该怎么办?比如替换A目录下(包括子目录)所有*.java中的某个字符串。
页: [1]
查看完整版本: 请教:我想在一个目录下的所有文件中查找s1,并替换为s2