JPEGファイルの再帰変換

JPEGファイルの再帰変換

このコマンドラインを使用して、フォルダ内のjpegをpdfに変換します。

for f in *.jpg; do  echo "Converting $f"; convert "$f" "$(basename "$f" .jpg).pdf"; done

しかし、複数のフォルダにあるすべての.jpgを同じフォルダにある.pdfに変換したいと思います。 「フォルダAに移動してpdfに変換を開始し、完了したらフォルダBに移動して同じことを行います」というbashコマンドが必要です。

JPEGファイルは.jpgまたは.JPGで終わることもできます。

私のフォルダ構造は次のとおりです。

Folder A
    File1.jpg
    File1.jpg
    File1.jpg
    File1.jpg
    File1.jpg
Folder B
    File1.jpg
    File1.jpg        
    File1.jpg
    ...

これを達成する方法についてのアイデアはありますか?

ベストアンサー1

*.jpg更新された質問*.JPGに従ってファイル名を受け入れるように更新されました。大文字と小文字を区別しない比較とパターンを使用した変数拡張の
ため。これは実際にはどんな場合でも一致します(例:)。-iname${file%.[jJ][pP][gG]}.jpg.JpG

Folder AとがFolder B現在のディレクトリにあり、すべてのディレクトリで同じ操作を繰り返し実行したいとします。

find . -type f -iname \*.jpg | while read -r file
do
    echo "Converting $file"
    convert "$file" " ${file%.[jJ][pP][gG]}.pdf"
done

またはディレクトリ名を指定する場合

find "Folder A" "Folder B" type f -iname \*.jpg | ...

サブディレクトリの名前を指定していない場合は*.jpg省略できます-type f

Folder Aサブディレクトリなどで再帰的に変換を実行したくない場合は、-maxdepth条件を追加する必要があります。

おすすめ記事