ImageMagick 的按数字顺序输入

ImageMagick 的按数字顺序输入

我有一个充满有序 jpg 文件的目录,如下所示:

1.jpg
2.jpg
3.jpg
.
.
.
265.jpg

在 Windows 上,我可以合并这些文件依次地,按顺序到一个文件中scan.pdf使用

magick %d.jpg[1-n] scan.pdf

其中n是 jpg 的总数(在我的例子中是 265)。在 MacOS 上,使用zsh,我尝试了此操作并收到错误“ no matches found: %d.jpg[1-n]”(再次替换n)。如果我尝试

magick *.jpg scan.pdf

它没有以正确的顺序呈现(显然,因为它是按字母顺序而不是数字顺序)。此外,尝试

magick [1-n].jpg scan.pdf

似乎不适用于n> 9。在 MacOS(可能还有 Linux)上的 ImageMagick 中组合多个连续命名的文件的正确方法是什么?

答案1

%d[1-n]imagemagick扩展名:第一个是文件名参考,第二个是帧/图像范围 - 请参阅部分输入文件名在文档中。该部分包含示例和用青色强调的段落:

Linux shell 通常解释括号,因此我们将文件名括在上面的引号中。在 Windows 命令 shell 中,括号不会被解释,但使用引号也没有什么坏处。然而,在大多数情况下,单引号和双引号的角色对于 Linux 和 Windows 来说是相反的,因此 Windows 用户通常应该在我们显示单引号的地方尝试使用双引号,反之亦然。
magick 'images.gif[0-3]' images.mng

%d.jpg[1-256]在 shell 中使用不带引号的结果将其扩展为%d.jpg1, %d.jpg2,%d.jpg5%d.jpg6(读答案在这里以获得解释)并且由于没有这样的文件名,因此您会收到错误no matches found
明显的解决方法是按照手册引用表达式,以便 shell 将其逐字传递给命令magick

magick '%d.jpg[1-256]' scan.pdf

值得一提的是,您的 shellzsh能够通过(n)glob 限定符对 glob 进行数字排序,因此以下内容也应该有效:

magick ./*.jpg(n) scan.pdf

尽管这将处理.jpg当前目录中的所有文件(按数字排序)。如果要将扩展限制在某个数值范围内,请使用<m-n>匹配的glob 运算符任何范围内的数字mn包括:

magick <1-256>.jpg(n) scan.pdf

相关内容