何千もの画像ファイルを含むディレクトリがあります。ほとんどがJPGですが、一部はPNGです。ファイルには拡張子がなく、番号が付けられているだけです。それらすべてをJPGに変換する必要があります。
findを使用すると、すべてのファイルとそのタイプのリストを取得できます。そこから、Imagemagickを使用して、タイプを指定することでPNGからJPGに変換できます。
convert png:10020 jpg:10020.jpg
しかし、私はこれをすべてのファイルにわたるバッチとして実行したいと思います。 findの出力をパイプして、すべてのPNGファイルをJPGに変換するにはどうすればよいですか?
_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に変換して動作します。