
何千もの画像ファイルを含むディレクトリがあります。ほとんどは JPG ですが、いくつかは PNG です。ファイルには拡張子がなく、番号だけが付けられています。これらすべてを JPG に変換する必要があります。
使用探すすべてのファイルとそのタイプのリストを取得し、そこから Imagemagick を使用してタイプを指定して PNG から JPG に変換できます。
convert png:10020 jpg:10020.jpg
しかし、私はこれをすべてのファイルに対してバッチで実行したいのですが、出力をパイプするにはどうすればいいでしょうか?探すすべての PNG ファイルを JPG に変換しますか?
答え1
find . -type f | while read IN; do
if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
convert png:$IN jpg:$IN.jpg;
fi;
done;
引数の意味:
.
現在のディレクトリで検索-type f
ディレクトリやソケットなどではなく、ファイルだけを検索します。while read IN; do
各ファイル名を変数に入れてIN
ループを実行します。if [ "x$(file -b --mime-type $IN)" = "ximage/png" ]; then
ファイルが PNG かどうかを確認します...convert png:$IN jpg:$IN.jpg;
...もしそうなら、それを変換します。fi; done;
完了しました!
今回テストしてみたところ、拡張子のない PNG でいっぱいのディレクトリを.png
JPG に変換できました。