img2pdf
可以非常快速地处理数百张图像,并使用如下命令将它们创建为 pdf
img2pdf *.tif -o out.pdf
但就我而言,页面顺序是错误的。我在konsole
Kubuntu 20.04 下运行了该命令。
图像文件以以下形式命名(在 Dolphin 文件管理器中重命名):
Vol_1.tif
Vol_2.tif
Vol_3.tif
...
Vol_430.tif
生成的 pdf 从被调用的文件/页面开始,Vol_100.tif
这有一定意义(100 在 1 或 11 之前看到)。然后,那个叫的Vol_119.tif
后面是Vol_11.tif
,Vol_129.tif
后面是Vol_12.tif
……Vol_189.tif
后面是Vol_18.tif
。
如何进行?
答案1
最好的选择是使用 perl 实用程序重命名文件,使它们都具有相同数量的零填充数字rename
(在不同的发行版上有不同的名称,包括perl-rename
, prename
, file-rename
)。例如:
rename -n 's/^(Vol_)(\d+)/sprintf "%s%03i", $1, $2/e' Vol_*.tif
如果三位数补零不够,请更改%03i
为%04i
或。%05i
这使用了该-n
选项,因此只会显示要重命名的内容。如果/当您确定它执行您想要的操作时,请删除-n
以静默重命名文件(除了错误之外没有输出),或将其替换-v
为详细操作。
使用-v
,您将看到如下输出:
$ rename -v 's/^(Vol_)(\d+)/sprintf "%s%03i", $1, $2/e' Vol_*.tif
Vol_1.tif renamed as Vol_001.tif
Vol_2.tif renamed as Vol_002.tif
Vol_50.tif renamed as Vol_050.tif
Vol_60.tif renamed as Vol_060.tif
另一种选择是对文件名执行自然排序,因此您需要使用 GNU find
、sort
和xargs
(或支持 NUL 分隔符的其他版本):
例如
find . -name 'Vol_*.tif' -print0 | sort -z -V | xargs -0r img2pdf -o out.pdf
GNU 排序的-V
选项是“版本”排序,这是自然排序的名称。
答案2
您可以使用 shell 以正确的顺序扩展文件名。
在 bash 中,如果知道数字范围,则可以使用大括号扩展:
img2pdf Vol_{1..430}.tif -o out.pdf
或者使用常规通配符,只需说您首先想要个位数:
img2pdf Vol_?.tif Vol_??.tif Vol_???.tif -o out.pdf