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

作者: REIDO (NEET)   2015-12-09 20:18:49
我這邊有很多資料夾,
a/
a/b/
b/c/d
類似這樣,大家位置不同,內部有個檔案叫xyz,我希望所有xyz都改名成fgh
問題是mv除了改檔名也會改位置,如果我用find . -name xyz -exec mv {} fgh \;
會把所有檔案弄到工作資料夾,還會互相蓋台,我是希望他們待在原本地方,
只是換個名,請問要怎麼辦?
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2015-12-09 21:19:00
find . -name xyz -exec mv {} `dirname {}`/fgh ?\;這樣試試看?
作者: bibo9901 (function(){})()   2015-12-09 21:41:00
find . -name xyz -execdir mv {} fgh \;
作者: bluecadence (Maxwell's demon)   2015-12-09 22:09:00
find . -type f -name xyz -print0 | xargs -0 -I{} sh -c 'mv "{}" "$(dirname "{}")/fgh"'
作者: n3oanderson (wake up ...)   2015-12-11 01:09:00
find . -name oldf -type f -execdir mv {} newf \;
作者: REIDO (NEET)   2015-12-11 19:03:00
CP64的方式會失敗,還是搬到工作目錄,也就是`dirname {}`失靈,這我也搞不懂。bibo9901成功。bluecadence和n3oanderson也都OK,感謝各位的幫忙。為什麼兩個人都有用dirname {},CP64的會失敗啊?應該對啊
作者: CaptainH (Cannon)   2015-12-15 21:12:00
因為`...`會翻譯後再傳給findCP64其實是在執行 find . -name xyz -exec mv {} ./fgh

Links booklink

Contact Us: admin [ a t ] ucptt.com