現在、10,000を超えるフォルダがあります。各フォルダには、.pdfファイルに変換する必要がある.pngおよび.jpgイメージがあります。ファイルは番号順にソートされました。
私はスピードを探しています。現在、各フォルダにCDを挿入して実行できます。
img2pdf * -o out.pdf
何百もの画像があるにもかかわらず、1秒以内に完璧に生成されたout.pdfを得ました。
私の最終目標は、呼び出し可能なシェルスクリプトでそれを自動化することです。したがって、各フォルダはデフォルトで、以前のディレクトリと同じファイル名を持つ.pdfファイルになります。
Directory001/img001.jpg
img002.jpg
img003.jpg
OtherDirectory/img1.png
img2.png
img3.png
~になる
Directory001.pdf
OtherDirectory.pdf
代わりに、img2pdfを使用すると、PDFを生成する最速の方法だからです。私は単純なbashの経験がありますが、単純な1行だけを使用します(すべてのディレクトリを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