看板 Linux 關於我們 聯絡資訊
我這邊有很多資料夾, 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
CP64: find . -name xyz -exec mv {} `dirname {}`/fgh ? 12/09 21:19
CP64: \; 12/09 21:20
CP64: 這樣試試看? 12/09 21:20
bibo9901: find . -name xyz -execdir mv {} fgh \; 12/09 21:41
bluecadence: find . -type f -name xyz -print0 | xargs -0 -I 12/09 22:09
bluecadence: {} sh -c 'mv "{}" "$(dirname "{}")/fgh"' 12/09 22:09
n3oanderson: find . -name oldf -type f -execdir mv {} newf \; 12/11 01:09
REIDO: CP64的方式會失敗,還是搬到工作目錄,也就是`dirname {}` 12/11 19:03
REIDO: 失靈,這我也搞不懂。bibo9901成功。 12/11 19:03
REIDO: bluecadence和n3oanderson也都OK,感謝各位的幫忙。 12/11 19:07
REIDO: 為什麼兩個人都有用dirname {},CP64的會失敗啊?應該對啊 12/11 19:16
CaptainH: 因為`...`會翻譯後再傳給find 12/15 21:12
CaptainH: CP64其實是在執行 find . -name xyz -exec mv {} ./fgh 12/15 21:13