我有一个充满有序 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 运算符任何范围内的数字m
,n
包括:
magick <1-256>.jpg(n) scan.pdf