在找到的文件夹中查找并执行

在找到的文件夹中查找并执行

我正在尝试查找包含 *.nef 的文件并将它们移动到该文件所在文件夹的子目录名 NEF 中。

我已经开始使用以下命令进行测试,但这总是复制到我当前的目录,即我的主文件夹。

find testfolder/*.nef -exec mv NEF \;

在 man find 部分我读到了关于使用的内容-execdir,但使用它而不是-exec仍然有相同的结果。

所以问题是:我如何动态地假设当前找到的目录并将找到的文件 mv 到名为 NEF 的子目录文件夹中?(尚不存在)

提前致谢!

答案1

你的想法是对的-execdir。下面这样的简单方法应该有效

find testfolder/ -name '*.nef' -execdir mkdir -p NEF \; -execdir mv {} NEF/ \; 

答案2

尝试:

find  testfolder/ -iname "*.nef" -exec bash -c 'mkdir $(dirname "{}")/NEF ; mv "{}" $(dirname "{}")/NEF/' \;

dirname用于从结果中提取路径,然后在移动文件之前使用它创建新的子目录。

相关内容