2016-04-25 88 views
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终端上执行此操作?

回答

0

如果包含文件的文件夹的名称是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 
0

简化和更普遍的方式,考虑与空间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