使用终端将数百个 jpg 转换为 PDF

You*_*sty 8 command-line format-conversion

我知道该命令convert *.jpg myPdf1.pdf可以将多个 JPEG 文件转换为单个 PDF。

但我想将多个 JPEG 转换为多个 PDF,例如:

myJPG1.jpg ? myPDF1.pdf
myJPG2.jpg ? myPDF2.pdf
myJPG3.jpg ? myPDF3.pdf
Run Code Online (Sandbox Code Playgroud)

有没有像样的方法来管理这样的事情?

Oli*_*Oli 14

我对批处理文件的第一直觉几乎总是find. 如果您需要构建任何类型的过滤(您在这里没有),它非常好,但它仍然是最喜欢的。这也将递归到子目录,除非你告诉它(-maxdepth 1或其他):

find -name '*.jpg' -exec convert "{}" "{}.pdf" \;
rename 's/\.jpg\.pdf$/.pdf/' *.jpg.pdf
Run Code Online (Sandbox Code Playgroud)

find/convert语句将输出的负载.jpg.pdf文件。第二个清理这个。


在这种简单的情况下,也许是一种更优雅的方法:

for file in *.jpg ; do convert "$file" "${file/%jpg/pdf}"; done
Run Code Online (Sandbox Code Playgroud)

这不会递归,您也不必费心清理文件名。


我差点忘了,ImageMagick 有一个数字输出,它可能非常适合您的用例。下面将只是坚持一个三位数标识符(000001002对“myPDF”结束时,等等):

convert *.jpg myPDF%03d.pdf
Run Code Online (Sandbox Code Playgroud)

显然,如果您要处理一千多个条目,请增加数量。如果您不希望它补零,请删除前导零。