我想在某些目录下重命名png文件。新文件名应该是目录名连接的,如DirectoryNameFileName.png。 我认为命令必须如下,但这不能正常工作。任何帮助将不胜感激。 谢谢。 我的环境是Mac OSX GNU bash。
find . -name '*.png' -type f -exec bash -c 'mv {} ./{basename `pwd`}{}' \;
答案 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
运行的那个。