QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1719|回复: 10

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

[复制链接]
发表于 2004-10-11 15:08:10 | 显示全部楼层 |阅读模式
我想在一个目录下的所有文件中查找字符串1,并替换为字符串2,命令行该怎么写呢

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

谢谢
发表于 2004-10-11 15:24:49 | 显示全部楼层
用vim。
1)cd 目录
2)vim *
3):argdo %s/str1/str2/g | update
回复

使用道具 举报

 楼主| 发表于 2004-10-11 15:35:15 | 显示全部楼层
楼上的兄弟,我怎么没看明白啊,解释一下吧,不好意思 :-(
回复

使用道具 举报

发表于 2004-10-11 23:24:44 | 显示全部楼层
[code:1]
perl -pe 's/string1/string2/g' /path/*[/code:1]
回复

使用道具 举报

发表于 2004-10-12 00:19:19 | 显示全部楼层
sed -n -e 's/str1/str2/gp' /path/*
此条命令只能显示目录下文件中替换的内容,不可显示下一级目录中文件的替换情况,而且只是显示替换,并没有正真替换,有没有高手来重写一下,完成上面中我说的两个不足之处!
回复

使用道具 举报

发表于 2004-10-12 00:23:28 | 显示全部楼层
补充一下,最好在#($)后的命令中完成,不要用VI命令进入文本操作,写SHELL脚本也可以!
麻烦各位大虾喽!
回复

使用道具 举报

发表于 2004-10-12 00:37:13 | 显示全部楼层
[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]
回复

使用道具 举报

 楼主| 发表于 2004-10-12 09:13:13 | 显示全部楼层
请大家都解释一下自己命令的意思好么,另外,最好可以通过命令行直接完成 .
谢谢了
回复

使用道具 举报

发表于 2004-10-13 01:59:29 | 显示全部楼层
似乎最为正统的办法是sed吧。不过可能要编一个小程序了,因为sed的输出好像必须用重定向。
回复

使用道具 举报

发表于 2004-10-13 11:09:10 | 显示全部楼层
[quote:328d88a572="helloworldd"]请大家都解释一下自己命令的意思好么,另外,最好可以通过命令行直接完成 .
谢谢了 [/quote]
我写的就是在命令行下直接运行即可,用perl直接修改文件,不用重定向的!
回复

使用道具 举报

发表于 2004-11-17 14:52:11 | 显示全部楼层
如果是想替换某个目录下某种类型的文件中的内容,那该怎么办?比如替换A目录下(包括子目录)所有*.java中的某个字符串。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-9-18 17:04 , Processed in 0.095854 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表