請問如何改多重資料夾內的特定檔案名稱 - Linux

Table of Contents

我這邊有很多資料夾,

a/
a/b/
b/c/d

類似這樣,大家位置不同,內部有個檔案叫xyz,我希望所有xyz都改名成fgh
問題是mv除了改檔名也會改位置,如果我用find . -name xyz -exec mv {} fgh \;
會把所有檔案弄到工作資料夾,還會互相蓋台,我是希望他們待在原本地方,
只是換個名,請問要怎麼辦?

--
小黃小黃別生氣,明天帶妳去看戲。


我坐椅子妳坐地,我吃雞腿妳啃骨。

--

All Comments

Bethany avatarBethany2015-12-11
find . -name xyz -exec mv {} `dirname {}`/fgh ?
Skylar Davis avatarSkylar Davis2015-12-11
\;
這樣試試看?
Daph Bay avatarDaph Bay2015-12-15
find . -name xyz -execdir mv {} fgh \;
Edwina avatarEdwina2015-12-17
find . -type f -name xyz -print0 | xargs -0 -I
{} sh -c 'mv "{}" "$(dirname "{}")/fgh"'
Vanessa avatarVanessa2015-12-19
find . -name oldf -type f -execdir mv {} newf \;
Ina avatarIna2015-12-22
CP64的方式會失敗,還是搬到工作目錄,也就是`dirname {}`
失靈,這我也搞不懂。bibo9901成功。
Vanessa avatarVanessa2015-12-23
bluecadence和n3oanderson也都OK,感謝各位的幫忙。
Zora avatarZora2015-12-26
為什麼兩個人都有用dirname {},CP64的會失敗啊?應該對啊
Wallis avatarWallis2015-12-27
因為`...`會翻譯後再傳給find
Valerie avatarValerie2015-12-29
CP64其實是在執行 find . -name xyz -exec mv {} ./fgh