我这里有这个命令,用于使用 .bat 将 PDF 文档(前 2 页)批量转换为 TIFF 文件pdftoppm
。
目标是将 TIFF 图像放入其自己的文件夹中,文件夹名称与原始 PDF 文件名匹配。
for file in *.pdf; do
pdftoppm -tiff -f 1 -l 2 "$file" ~/tiff/directory/"$file"/"$file"
done
如何pdftoppm
同时运行该命令的 8 个实例?
我正在运行 Debian。我有 10000 个 PDF 需要转换为 TIFF。
答案1
一种方法是为所有作业创建 shell 输入:
for file in *.pdf
do
printf 'pdftoppm -tiff -f 1 -l 2 "%q" ~/tiff/directory/"%q"/"%q"' \
"$file" "$file" "$file"
done
然后通过管道将其传递到parallel -j N
其中 N 是要同时运行的作业数:
for file in *.pdf
do
printf 'pdftoppm -tiff -f 1 -l 2 "%q" ~/tiff/directory/"%q"/"%q"' \
"$file" "$file" "$file"
done |
parallel -j 8
答案2
使用 GNU parallel
:
printf '%s\0' ./*.pdf |
parallel --null --jobs 8 \
pdftoppm -tiff -f 1 -l 2 '{}' ~/tiff/directory/'{/.}'/'{/.}'.tiff
上面的命令管道将在当前目录中pdftoppm
匹配的所有文件名上运行您的命令。*.pdf
扩展'{}'
为当前路径名,同时'{/.}'
扩展为当前路径名的基名,并删除文件名后缀。因此,如果当前文件名是./file-02.pdf
,那么将'{}'
是'./file-02.pdf'
while 。'{/.}'
file-02
我使用parallel
nul 分隔的路径名来printf
处理任何可能的文件名。这些由--null
读取parallel
。
我对目标路径名做了一些改动。您应该将其调整为您实际想要使用的内容。