回答:
ファイル名を引用符で囲まないため、問題が発生する可能性があります。
for f in */*.bmp ; do convert "$f" "${f%bmp}png" ; done
# ^ ^ ^ ^
これを行うのは、ファイル名のスペースが問題を引き起こさないためです。
*/*.bmp
。
このようにコードをリファクタリングします。私はこの方法がより明確でデバッグしやすいと思います:
find . -type f -name '*.bmp' |\
while read BMP
do
DIR=$(dirname "$BMP")
PNG="$(echo $BMP | sed 's/.bmp//g')"
convert "${BMP}" "${PNG}".png
done
find | while read
特にglobで十分な場合は、を使用しないでください。
's/\.bmp$/.png/'
実際のコマンドから明らかに.pngを削除します
$f
引用する必要があります