作者:
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感謝!