[問題] 關於路徑 我又來求解了

看板Linux作者 (DanzYam)時間10年前 (2015/07/10 12:42), 10年前編輯推噓3(3014)
留言17則, 5人參與, 最新討論串1/1
大家好,這次我真的想破頭,一點頭序都沒有 我有一堆資料在/home/me/doc/a/ 我一個需修改資料清單檔在 /home/me/doc/list 我想一次修改過檔案內容,以下是我做的順序 $cat list (確認下清單內容) /home/me/doc/a/123.txt /home/me/doc/a/223.txt /home/me/doc/a/323.txt /home/me/doc/a/423.txt /home/me/doc/a/523.txt $ cat list |xargs -i sed 's///g' {} (把清單的路徑做為sed的filename) No such file or directoryx/home/me/doc/a/123.txt No such file or directoryx/home/me/doc/a/223.txt No such file or directoryx/home/me/doc/a/323.txt No such file or directoryx/home/me/doc/a/423.txt No such file or directoryx/home/me/doc/a/523.txt $ cat /home/me/doc/a/123.txt (確認檔案是否存在) 檔案內容存在 -- 才疏學淺,完全不知道為什麼Orz 請指點下小弟,謝謝 Dan -- 不過是人 http://www.facebook.com/twaiting -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.66.243.96 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1436503347.A.ED8.html

07/10 12:52, , 1F
xargs --verbose 可以看到要執行的 command
07/10 12:52, 1F

07/10 12:53, , 2F
可能是sed 的參數有問題, 試試用雙引號包起來?
07/10 12:53, 2F
我發現可能是文件的編碼問題,list清單是在windows上做的 (剛剛做了好像又不是) 我下 $xargs -t -a ./list 只出現兩行 /home/me/doc/a/123.txtocentxt /home/me/doc/a/123.txttxt Orz好想死

07/10 13:25, , 3F
-i: This option is deprecated; use -I instead.
07/10 13:25, 3F

07/10 13:26, , 4F
try this: xargs -I{} -t -n 1 echo {}
07/10 13:26, 4F
when I use -I{} instead,got the same result. I think maybe the issue is encoding of file ※ 編輯: cherubx (61.66.243.96), 07/10/2015 13:47:15

07/10 13:53, , 5F
試試用vi看一看list檔,把裏面的怪字元除掉,太多列用regex
07/10 13:53, 5F

07/10 13:54, , 6F
如果vi也看不出來,用od來看
07/10 13:54, 6F

07/10 13:54, , 7F
反正先找出有什麼字元是路徑以外的,格式如何再來想辦法
07/10 13:54, 7F
不好意思od我不會看,我會再學的Orz 我剛剛直接用vi 在tty上全部手動key上路徑,做出新的list $cat new-list |xargs -t -I{} sed 's///g' {} sed s///g /home/me/doc/a/123.txt sed: can't read /home/me/doc/a/123.txt : No such file or directory ....全都是 $sed s///g /home/me/doc/a/123.txt (照xargs的指令key一遍) 內容出來了!! 我在想是不是原檔的權限問題,我chmod 744後還是一樣... 突然覺得linux可以玩一輩子了T.T ※ 編輯: cherubx (61.66.243.96), 07/10/2015 14:01:48

07/10 15:15, , 8F
先直接用bash執行 while read p; do sed s///g $p <換行>
07/10 15:15, 8F

07/10 15:15, , 9F
done<new-list
07/10 15:15, 9F

07/10 15:15, , 10F
看看有沒有成功?
07/10 15:15, 10F

07/10 15:16, , 11F
linux至少還有這些指令可以玩一輩子,在早先的windows,這
07/10 15:16, 11F

07/10 15:17, , 12F
種批次動不寫程式來做要下輩子 XD
07/10 15:17, 12F

07/10 15:17, , 13F
^作
07/10 15:17, 13F

07/10 19:25, , 14F
上傳你的list.txt給大家看一下啊
07/10 19:25, 14F

07/10 19:28, , 15F
為什麼你要xargs -i ? 你的-i是要給sed的吧?
07/10 19:28, 15F
-i 不是用來表示{}把前面的結果當引用檔使用嗎? 因為我的程式沒-i 的話{}會讀不到

07/10 22:15, , 16F
試試 dos2unix 指令, 之前在 windows 處理過有問題的檔案
07/10 22:15, 16F

07/10 22:16, , 17F
之前在 windows 處理過正常, linux有問題的檔案, 都這樣解
07/10 22:16, 17F
好了!!!! 我真是太蠢了 謝謝以上各位的幫忙T.T 非常感謝 ※ 編輯: cherubx (61.66.243.96), 07/11/2015 11:53:12
文章代碼(AID): #1LdqqpxO (Linux)
文章代碼(AID): #1LdqqpxO (Linux)