A ordem de classificação depende da localidade. O C locale padrão é classificado no seu exemplo:
$ LC_COLLATE=C ls -A
.hidden Zappa aardvark vent water zebra
Mas muitos outros dão prioridade às letras e ignoram o caso e os períodos principais:
$ LC_COLLATE=en_US.UTF-8 ls -A
aardvark .hidden vent water Zappa zebra
(Eu não ficaria surpreso se algumas localidades também considerassem caracteres como v e w como iguais, mas não consigo criar uma que faça isso. )
Claro, você precisa ter essas localidades no sistema. locale -a deve mostrar as localidades atualmente utilizáveis no sistema, e você pode usar locale-gen $localename para gerar as que está faltando. Então, há dpkg-reconfigure locales que mostra uma lista onde você pode escolher quais localidades gerar.