我目前有超过 10K 个文件夹。每个文件夹都有需要转换为 .pdf 文件的 .png 和 .jpg 图像。文件已经按数字顺序排列。
我正在寻找速度。我目前可以 cd 进入每个文件夹并运行
img2pdf * -o out.pdf
我在不到一秒的时间内就得到了一个完美创建的 out.pdf,即使有数百张图像。
我的最终目标是在可调用的 shell 脚本中自动执行此操作,因此每个文件夹基本上都会变成一个 .pdf 文件,其文件名与旧目录相同,如下所示
Directory001/img001.jpg
img002.jpg
img003.jpg
OtherDirectory/img1.png
img2.png
img3.png
变成
Directory001.pdf
OtherDirectory.pdf
而仅使用 img2pdf 来执行此操作,因为它是迄今为止创建 pdf 最快的方法。我有一些简单的 bash 经验,但只有简单的一行(比如将所有目录转换为 zip)。我知道这是可以做到的,但不知道从哪里开始。
答案1
要对大量文件或目录执行批处理命令,您经常使用 find -exec ,如下所示:
find . -type d -exec "img2pdf" "{}"/* -o "{}".pdf ";"
这种方法是最灵活的,但在你的情况下,你也可以使用一个简单的循环:
for i in ./*/
do img2pdf "$i"/* "$i.pdf"
done
答案2
尝试这个
#!/bin/bash
#set -xf
TOPDIR=$PWD
dirs=($(find . -type d))
for dir in "${dirs[@]}"; do
#echo $dir
cd $dir
#echo $PWD
img2pdf --out $dir.pdf *.jpg
cd $TOPDIR
done