Salut,
C'est normal vu que l'espace est un caractère spécial pour le shell. L'espace sépare les commandes des options, des arguments, etc.
Voici un exemple
lami20j@debian:~$ ls *.jpg
aa aa.jpg bb bb.jpg capture1.jpg capture2.jpg
Donc quand tu fais
for i in $(ls *.jpg) shell vois ça
for i in aa aa.jpg bb bb.jpg capture1.jpg capture2.jpg
Donc il va affiche chaque élément séparé par espace.
Voici une manière de le faire
lami20j@debian:~$ ls *.jpg
aa aa.jpg bb bb.jpg capture1.jpg capture2.jpg
lami20j@debian:~$ for i in `ls *.jpg|tr " " "_"`; do echo ${i/_/ }; done
aa aa.jpg
bb bb.jpg
capture1.jpg
capture2.jpg
106485010510997108