[問題] 請問如何改多重資料夾內的特定檔案名稱

看板Linux作者 (NEET)時間10年前 (2015/12/09 20:18), 編輯推噓0(0013)
留言13則, 6人參與, 最新討論串1/1
我這邊有很多資料夾, a/ a/b/ b/c/d 類似這樣,大家位置不同,內部有個檔案叫xyz,我希望所有xyz都改名成fgh 問題是mv除了改檔名也會改位置,如果我用find . -name xyz -exec mv {} fgh \; 會把所有檔案弄到工作資料夾,還會互相蓋台,我是希望他們待在原本地方, 只是換個名,請問要怎麼辦? -- 小黃小黃別生氣,明天帶妳去看戲。 我坐椅子妳坐地,我吃雞腿妳啃骨。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.137.85 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1449663533.A.E83.html

12/09 21:19, , 1F
find . -name xyz -exec mv {} `dirname {}`/fgh ?
12/09 21:19, 1F

12/09 21:20, , 2F
\;
12/09 21:20, 2F

12/09 21:20, , 3F
這樣試試看?
12/09 21:20, 3F

12/09 21:41, , 4F
find . -name xyz -execdir mv {} fgh \;
12/09 21:41, 4F

12/09 22:09, , 5F
find . -type f -name xyz -print0 | xargs -0 -I
12/09 22:09, 5F

12/09 22:09, , 6F
{} sh -c 'mv "{}" "$(dirname "{}")/fgh"'
12/09 22:09, 6F

12/11 01:09, , 7F
find . -name oldf -type f -execdir mv {} newf \;
12/11 01:09, 7F

12/11 19:03, , 8F
CP64的方式會失敗,還是搬到工作目錄,也就是`dirname {}`
12/11 19:03, 8F

12/11 19:03, , 9F
失靈,這我也搞不懂。bibo9901成功。
12/11 19:03, 9F

12/11 19:07, , 10F
bluecadence和n3oanderson也都OK,感謝各位的幫忙。
12/11 19:07, 10F

12/11 19:16, , 11F
為什麼兩個人都有用dirname {},CP64的會失敗啊?應該對啊
12/11 19:16, 11F

12/15 21:12, , 12F
因為`...`會翻譯後再傳給find
12/15 21:12, 12F

12/15 21:13, , 13F
CP64其實是在執行 find . -name xyz -exec mv {} ./fgh
12/15 21:13, 13F
文章代碼(AID): #1MQ1mjw3 (Linux)