私は自分のマシン上に数百の画像があるディレクトリを持っています。それらの画像の約半分はbmpで、残りの半分はpngです...すべてのbmpをpngにする必要がありますが、たくさんあるので手動でやりたくありません。
では、どのようにして再帰的かつ自動的に(おそらくスクリプトを使用して)すべてのbmp画像ファイルをそのディレクトリ内のpng画像ファイルに変換できますか?
Ubuntu GNOME 15.10とGNOME 3.18を実行しています。
単一のディレクトリには、単純なfor
ループで十分な場合があります。
for i in *.bmp
do
convert $i "${i%.bmp}.png"
done
これを本当に再帰的にするには、いくつかの選択肢があります。1つの方法は次のとおりです。
find . -name '*.bmp' -type f -exec bash -c 'convert "$0" "${0%.bmp}.png"' {} \;
もう少し手を出す場合は、構文を使用して、PNGレベルの品質レベルを指定します。
-quality value
これは、最低品質および最小ファイルサイズの場合は1の値をとり、最高品質および最大ファイルサイズの場合は100になります。デフォルトは約92です。さらに 詳細はこちら...
Andrew.46による答えは、それが雄弁なオンラインライナーであるため、依然として最高だと思います。ただし、別のオプションがあります。唯一の利点は、変換する「ファイルの総数」のうち「現在のファイル数カウント」があり、変換されるファイルをエコーすることです。ただし、実行する前に、ファイル名のスペースをすべて削除することをお勧めします。これにより、スペースが削除されます:find . -name "* *" | rename 's/ /-/g'
#!/bin/bash
cd $(pwd)
bmp_files=$(find . -iname "*.bmp")
total=$(echo "$bmp_files" | wc -l)
num=0
echo "There are $total files to be converted."
for f in $bmp_files
do
((num++))
echo "Converting $f, $num/$total"
convert "$f" "${f%.bmp}.png"
clear
done