重命名文件以包含父目录

时间:2015-04-05 11:04:53

标签: macos bash

我想在某些目录下重命名png文件。新文件名应该是目录名连接的,如DirectoryNameFileName.png。 我认为命令必须如下,但这不能正常工作。任何帮助将不胜感激。 谢谢。 我的环境是Mac OSX GNU bash。

find . -name '*.png' -type f -exec bash -c 'mv {} ./{basename `pwd`}{}' \;

1 个答案:

答案 0 :(得分:1)

我认为这会得到你想要的输出:

find . -name '*.png' -type f -exec bash -c 'mv {} "./$(basename "$(pwd)"){}"' \;

顺便提一下,这是一个很好的例子,为什么$()语法比反引号`更适合命令替换,因为它使嵌套更容易。 您可以使用shell变量$PWD而不是调用命令pwd

find . -name '*.png' -type f -exec bash -c 'mv {} "./$(basename "$PWD"){}"' \;

我目前无法测试它,但可能需要使用-execdir而不是-exec,以便命令从找到每个文件的目录运行,而不是而不是你从find运行的那个。