img2pdf:以良好的顺序获取页面

img2pdf:以良好的顺序获取页面

img2pdf可以非常快速地处理数百张图像,并使用如下命令将它们创建为 pdf

img2pdf *.tif -o out.pdf

但就我而言,页面顺序是错误的。我在konsoleKubuntu 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.tifVol_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 findsortxargs(或支持 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

相关内容