批处理运行 mogrify 包括子目录

Reg*_*gmi 14 linux command-line find exec

该命令mogrify -format jpg *.NEF在目录中运行时会将所有*.NEF文件转换为 JPEG。我想要做的是能够使用一个命令在子目录内的*.NEF文件中运行 mogrify 。我正在尝试运行类似的东西:

find . -type d exec mogrify -format jpg *.NEF \;
Run Code Online (Sandbox Code Playgroud)

当然它不起作用。有人可以建议正确的命令吗?

Cri*_*itu 20

看起来 ImageMagick 6.9.9.19 中的 mogrify 将结果写入与输入文件相同的目录中,因此您可以使用以下命令:

find . -name '*.NEF' -exec mogrify -format jpg {} +
Run Code Online (Sandbox Code Playgroud)

解释:

  • -name '*.NEF'查找所有*.NEF文件;使用-iname,如果你希望搜索不区分大小写。

  • -exec ... {} +对所有匹配的文件执行命令。另一种方法是将findxargs结合使用。