我的shell错在哪里?

我的shell错在哪里?

我需要更改一批文件的分辨率,有400多个,用下面的shell来做,
for i in *; do convert $i -resize 64x64 $i; done
不少文件名可能都有空格,结果只能更改几个文件后命令就僵死了。
convert: missing an image filename `X..png'.
convert: unable to open image `CD': No such file or directory.
convert: unable to open image `ROM.png': No such file or directory.
convert: unable to open file `ROM.png'.
convert: unable to open image `CD': No such file or directory.
convert: missing an image filename `ROM.png'.
==================================
再列几个文件名

Computer Blue Dalmation.png         @ Icon Aqua.png                        My Documents (globe).png                System iTools.png
Computer Ti Book Front.png          Icon Aqua.png                          My Music (globe).png
用双引号括起来不行吗?
for i in *; do convert "$i" -resize 64x64 "$i"; done
可以了,老大能不能介绍一本学习shell的书籍,我是文科的,学习shell有点不着边际。
还有一个文件无法改,就是一@开头的一个文件,文件名:@ Icon Aqua.png