我很惊讶我在网上找不到一个简单的脚本。我有一个目录,里面有很多子目录,每个子目录都充满了 TIFF。我如何批量将多个图像(TIFF)的子文件夹转换为单个 PDF,每个 PDF 都以其父文件夹命名?CLI 解决方案和设置首选输出目录的能力
前任。dir > 1998 > Jan011998 > 1.tif 2.tif ... → Jan011998.pdf (or, ideally, 1998-01.pdf)
dir > 1999 > 02231999 > 1.tif 2.tif ... → Feb231999.pdf (or 1999-02-23.pdf)
答案1
这是一个可以解决问题的小脚本:
#!/bin/bash
dirs=$(find . -type f -name "*.tiff" | xargs dirname |sort -u)
for d in $dirs; do
#ls $d/*.tiff # just debug info, should list all desired tiffs
#echo $(cut -d/ -f3 <<<$d) # debug info, should be desired output file name
convert $d/*.tiff $(cut -d/ -f3 <<<$d).pdf
done
首先,find
用于确定包含 TIFF 文件的所有目录。然后我们使用 ImageMagickconvert
将每个目录中的所有 TIFF 转换为 PDF 文件,其名称由目录创建。您可以轻松包含不同的输出目录:
convert $d/*.tiff somewhereElse/$(cut -d/ -f3 <<<$d).pdf
答案2
pdftk(PDF 工具包)程序允许您将多个 PDF 文件合并为一个大的输出 pdf 文件。
$ pdftk in1.pdf in2.pdf in3.pdf cat output big_out.pdf