Nunca analise a saída de 'ls'. Faça isso:
for i in *; do mv "$i" "a${i}"; done
A razão é que os nomes dos arquivos podem ter caracteres como \ r ou \ n neles e a análise de 'ls' NÃO os encontrará.
Atualização: informações úteis neste link: link
Com as informações adicionadas acima do OP, use este:
for i in /cygdrive/c/Users/path/to/Images/*; do mv "$i" "${i%/*}/a${i##*/}"; done
ISTO FARÁ UMA COISA RELATIVAMENTE MAU ... renomeará TODOS os arquivos, toda vez que você executá-lo. Isso significa que o arquivo 'foo' será 'afoo'. Quando você executá-lo novamente, será 'aafoo' then 'aaafoo', etc. Você pode programar isso evitando quaisquer arquivos que comecem com 'a', mas isso evitará TODOS os arquivos que começam com 'a', mesmo que eles não tenham ainda foi renomeado no script.