LinuxSir.cn,穿越时空的Linuxsir!

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

sed如何处理(等特殊字符

[复制链接]
发表于 2009-4-1 10:21:55 | 显示全部楼层 |阅读模式
需要执行:
find ./ -name '*.bak' -print0 | xargs -0 rm -rf
但是从windows系统内检索出来的文件名中有空格和括号,所以好多文件shell不能处理,报错。

希望 shell处理的结果:
652(saw)   ---->    652\(saw\)
也就是在括号前加一个转义符 \

用如下语句:
sed 's/(/ \(/g' 1.txt
但是不成功。

请各位达人指教。谢谢
发表于 2009-4-1 12:48:38 | 显示全部楼层
试试
find ./ -name '*.bak' -exec rm -rf {} \;
或者
find ./ -name '*.bak' -delete
回复 支持 反对

使用道具 举报

发表于 2009-4-3 11:47:04 | 显示全部楼层
少一个'\'
试下:sed 's/(/\\(/g'
或: sed 's/[()]/\\&/g'
回复 支持 反对

使用道具 举报

发表于 2009-4-3 11:48:10 | 显示全部楼层
不好意思,发重了
回复 支持 反对

使用道具 举报

发表于 2009-4-6 23:39:22 | 显示全部楼层
把空格和括号都替换成常规字符嘛,反正都是要删掉的。
回复 支持 反对

使用道具 举报

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

本版积分规则

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