在OS X上重命名一堆文件及其父文件夹名称

时间:2016-04-25 15:09:07

标签: macos terminal filenames batch-rename suffix

我有以下文件:(某些文件位于嵌套文件夹中)

/1/asd.m
/3/asd.m
/4/2/asd.m

我想重命名带有父文件夹名称后缀的.m文件。结果应该是这样的:

/1/asd1.m
/3/asd3.m
/4/2/asd2.m

如何在Mac终端上执行此操作?

2 个答案:

答案 0 :(得分:1)

考虑带空格的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

答案 1 :(得分: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