我正在尝试查找包含 *.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
用于从结果中提取路径,然后在移动文件之前使用它创建新的子目录。