看板 Linux 關於我們 聯絡資訊
想請問的是目前因為資料搬移的關係 所以檔案的相對路徑有所變更 而這些路徑都是寫在 a.xml 裡面 然後每個資料夾裡面都有一個自己的 a.xml (名稱一樣) 本來用 notepad++ 一個一個更改 後來想到可以用 sed 來做替換 但是因為 路徑本身包含了 / 像是我想要把 sed -i 's/kap/alda/resouce/kbp/aldw/reource/2/g' a.xml 把綠色的地方替換成黃色的 這樣要怎麼去改寫 還有就是可以一次把這資料夾裡面的各個子資料夾中的 a.xml 內容做一次性替換嗎? 感謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.74.124.79 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1435736894.A.9EF.html
OSDBNetwork: s:kap/alda/resouce:kbp/aldw/reource/2:g 07/01 15:54
asdrt: 用: OK! 07/01 15:58
obarisk: \ 07/01 16:27
kerwinhui: s後面可以隨意用separator,1樓用:,我個人比較喜歡用@ 07/01 16:33
asdrt: 所以我前面加上 find . a.xml | sed ......... 去替換 07/01 18:05
asdrt: 應該就可以了吧? 07/01 18:05
asdrt: 還是先用 awk 列出檔案列表再來修改? 07/01 18:06
cherubx: 用xargs -i sed -i 's///g' {} 07/01 22:39
kerwinhui: 萬一你的路徑名有空白或其他特殊字元,請用 -print0 和 07/02 00:53
kerwinhui: | xargs -0 07/02 00:53
kenduest: find 語法完全不對,應該是 find . -name a.xml 07/02 01:32
kenduest: 精準一點就.. find . -type f -name a.xml 07/02 01:33
kenduest: 搜尋路徑常常有特殊字元與空白等,所以一般都用 07/02 01:34
kenduest: find . -type f -name "xxx" -print 0 | xargs -0 ..... 07/02 01:34
kenduest: 另外有時候 xargs 收到的結果太多可能一次帶入給 07/02 01:35
kenduest: 要執行的命令引發引數太常問題,擔心這個可以搭配 -n 07/02 01:36
kenduest: find ...... -print0 | xargs -0 -n 200 sed .... 07/02 01:36
kenduest: -n 後面數字就看情況調整 07/02 01:36
asdrt: 感謝! 07/02 13:32