0
我有文件內容如下:(有些文件位於嵌套的文件夾內)重命名一堆與他們的父文件夾名的文件在OS X
/1/asd.m
/3/asd.m
/4/2/asd.m
我要重新命名.m文件與父母的後綴文件夾名稱。結果應該是這樣的:
/1/asd1.m
/3/asd3.m
/4/2/asd2.m
我該如何在Mac終端上執行此操作?
我有文件內容如下:(有些文件位於嵌套的文件夾內)重命名一堆與他們的父文件夾名的文件在OS X
/1/asd.m
/3/asd.m
/4/2/asd.m
我要重新命名.m文件與父母的後綴文件夾名稱。結果應該是這樣的:
/1/asd1.m
/3/asd3.m
/4/2/asd2.m
我該如何在Mac終端上執行此操作?
如果包含文件的文件夾的名稱是rename_folder
:
rename_folder/1/asd.m
rename_folder/3/asd.m
rename_folder/4/2/asd.m
您可以使用此命令重命名這些文件:
find rename_folder -type f -name "*.m" -exec sh -c 'x="{}"; fn="${x##*/}"; dn="$(dirname $x)"; mv "$x" "${dn}/${fn%%.*}${dn##*/}.${fn#*.}"' \;
結果應該是:
rename_folder/1/asd1.m
rename_folder/3/asd3.m
rename_folder/4/2/asd2.m
簡化和更普遍的方式,考慮與空間dirnames:
find . -name '*.mp3' -exec bash -xc 'dn=$(dirname "{}"); fn=$(basename "{}"); mv -v "{}" "$dn/$dn-$fn" ' \;
結果(經由bash -x
冗長):
++ dirname './80 дней вокруг света/56.mp3'
+ dn='./80 дней вокруг света'
++ basename './80 дней вокруг света/56.mp3'
+ fn=56.mp3
+ mv -v './80 дней вокруг света/56.mp3' './80 дней вокруг света/./80 дней вокруг света-56.mp3'
./80 дней вокруг света/56.mp3 -> ./80 дней вокруг света/./80 дней вокруг света-56.mp3