LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1250|回复: 2

查找某目录下 含某字符串的文字,全部替换另一个串!我的方法 貌似比较苯!请指教!

[复制链接]
发表于 2008-4-27 17:22:04 | 显示全部楼层 |阅读模式
find 目录名  -name "*.c"|xargs grep "字符串1"
得出一个列表,
用awk 以冒号:分割,得出路径文件名

然后循环读出这个文件,用
sed -i 替换
sed -i s/字符串1/字符串2/g

忘了 加什么参数 使得
find 目录名  -name "*.c"|xargs grep "字符串1"  直接显示文件名,不显示后面包含的 字符串1

不知用 find加xargs 怎么可以 直接 sed 替换
用exec 效率有点不高
用 xargs 不会

请各位高人指教!
发表于 2008-4-27 17:31:27 | 显示全部楼层
sed -i "s/oldString/newString/g" `grep oldString -rl /path`
这样不是更好?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-28 09:03:20 | 显示全部楼层
Post by gradetwo;1843148
sed -i "s/oldString/newString/g" `grep oldString -rl /path`
这样不是更好?


佩服,短短一行,省去我那么多步骤!
难怪 李元芳说:版主,真乃神人也!


不过再请教一下,
这个比那个 find + exec 效率好?

还有这个使用sed替换的,还有其他的替换 方法么?比如没装sed,或sed没有权限
awk、vi,或其他的工具?
回复 支持 反对

使用道具 举报

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

本版积分规则

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