楼主:
asdrt (安静)
2015-07-01 15:48:09想请问的是目前因为资料搬移的关系
所以档案的相对路径有所变更
而这些路径都是写在 a.xml 里面
然后每个资料夹里面都有一个自己的 a.xml (名称一样)
本来用 notepad++ 一个一个更改
后来想到可以用 sed 来做替换
但是因为 路径本身包含了 /
像是我想要把
sed -i 's/kap/alda/resouce/kbp/aldw/reource/2/g' a.xml
把绿色的地方替换成黄色的 这样要怎么去改写
还有就是可以一次把这资料夹里面的各个子资料夹中的 a.xml 内容做一次性替换吗?
感谢
s:kap/alda/resouce:kbp/aldw/reource/2:g
楼主:
asdrt (安静)
2015-07-01 15:58:00用: OK!
作者: obarisk (OSWALT) 2015-07-01 16:27:00
\
s后面可以随意用separator,1楼用:,我个人比较喜欢用@
楼主:
asdrt (安静)
2015-07-01 18:05:00所以我前面加上 find . a.xml | sed ......... 去替换应该就可以了吧?还是先用 awk 列出档案列表再来修改?
作者:
cherubx (DanzYam)
2015-07-01 22:39:00用xargs -i sed -i 's///g' {}
万一你的路径名有空白或其他特殊字符,请用 -print0 和| xargs -0
find 语法完全不对,应该是 find . -name a.xml精准一点就.. find . -type f -name a.xml搜寻路径常常有特殊字符与空白等,所以一般都用find . -type f -name "xxx" -print 0 | xargs -0 .....另外有时候 xargs 收到的结果太多可能一次带入给要执行的命令引发引数太常问题,担心这个可以搭配 -nfind ...... -print0 | xargs -0 -n 200 sed ....-n 后面数字就看情况调整
楼主:
asdrt (安静)
2015-07-02 13:32:00感谢!