.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を使用しています。 TIFFに変換する必要があるPDFが10000個あります。
答え1
1 つの方法は、すべてのアクションのシェル入力を作成することです。
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
展開し、現在のパス名のデフォルト名にも拡張し、ファイル名のサフィックスを削除します。したがって、現在のファイル名があればwhileになります。'{}'
'{/.}'
./file-02.pdf
'{}'
'./file-02.pdf'
'{/.}'
file-02
可能なファイル名を処理parallel
するには、nulで区切られたパス名を使用します。printf
この内容は で--null
読みますparallel
。
宛先パス名を一部変更しました。実際に使用したいものに合わせて調整する必要があります。