Esto no es realmente causado por ls , ya que ls nunca expande los patrones.
La decisión sobre cómo expandir los patrones globales (patrones que contienen * y ? ) es tomada por el shell . Su shell es muy probable bash .
Por defecto, bash no realiza expansión de ruta en archivos de puntos. Sin embargo, puede hacerlo escribiendo explícitamente el . (como ya descubrió) o activando la opción dotglob . Desde la página de manual de bash:
dotglob Si está configurado, bash incluye los nombres de archivo que comienzan con '.' en los resultados de la expansión del nombre de ruta.
Para demostrar, simplemente imprimamos la expansión con echo en lugar de ls :
$ touch .bash_profile.swo
$ echo .*.swo
.bash_profile.swo
$ echo *.swo
*.swo
$ shopt -s dotglob
$ echo *.swo
.bash_profile.swo
Se puede encontrar más información sobre here .