sed 取代問題 - Linux

Table of Contents

想請問的是目前因為資料搬移的關係
所以檔案的相對路徑有所變更
而這些路徑都是寫在 a.xml 裡面
然後每個資料夾裡面都有一個自己的 a.xml (名稱一樣)

本來用 notepad++ 一個一個更改

後來想到可以用 sed 來做替換

但是因為 路徑本身包含了 /

像是我想要把

sed -i 's/kap/alda/resouce/kbp/aldw/reource/2/g' a.xml

把綠色的地方替換成黃色的 這樣要怎麼去改寫

還有就是可以一次把這資料夾裡面的各個子資料夾中的 a.xml 內容做一次性替換嗎?

感謝


--


--

All Comments

Dorothy avatarDorothy2015-07-05
s:kap/alda/resouce:kbp/aldw/reource/2:g
Elma avatarElma2015-07-07
用: OK!
Xanthe avatarXanthe2015-07-08
\
Connor avatarConnor2015-07-09
s後面可以隨意用separator,1樓用:,我個人比較喜歡用@
Brianna avatarBrianna2015-07-11
所以我前面加上 find . a.xml | sed ......... 去替換
應該就可以了吧?
Caitlin avatarCaitlin2015-07-11
還是先用 awk 列出檔案列表再來修改?
Belly avatarBelly2015-07-13
用xargs -i sed -i 's///g' {}
Adele avatarAdele2015-07-17
萬一你的路徑名有空白或其他特殊字元,請用 -print0 和
| xargs -0
Lucy avatarLucy2015-07-18
find 語法完全不對,應該是 find . -name a.xml
Ivy avatarIvy2015-07-19
精準一點就.. find . -type f -name a.xml
Anthony avatarAnthony2015-07-20
搜尋路徑常常有特殊字元與空白等,所以一般都用
find . -type f -name "xxx" -print 0 | xargs -0 .....
Anonymous avatarAnonymous2015-07-22
另外有時候 xargs 收到的結果太多可能一次帶入給
Brianna avatarBrianna2015-07-24
要執行的命令引發引數太常問題,擔心這個可以搭配 -n
find ...... -print0 | xargs -0 -n 200 sed ....
-n 後面數字就看情況調整
Megan avatarMegan2015-07-28
感謝!