img2pdf バッチスクリプト

img2pdf バッチスクリプト

現在、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

関連情報