以下のコマンドを使用して、ImageMagickのconvert
を使用して単一のファイルをBMPからPNGに変換しました
convert CD\ Front.bmp CD\ Front.png
私はそのようなファイルをたくさん持っているので、私は試しました:
for f in */*.bmp ; do convert $f ${f%bmp}png; done
しかし、このコマンドは永久にハングします。
何が悪いのですか?
ファイル名を引用符で囲まないため、問題が発生する可能性があります。
for f in */*.bmp ; do convert "$f" "${f%bmp}png" ; done
# ^ ^ ^ ^
これを行うのは、ファイル名のスペースが問題を引き起こさないようにするためです。
このようにコードをリファクタリングします。私はこの方法がより明確でデバッグしやすいと思います:
find . -type f -name '*.bmp' |\
while read BMP
do
DIR=$(dirname "$BMP")
PNG="$(echo $BMP | sed 's/.bmp//g')"
convert "${BMP}" "${PNG}".png
done