De acuerdo con la página de manual de bash:
bash escanea cada palabra para los caracteres *,? y [. Si aparece uno de estos caracteres, la palabra se considera un patrón y se reemplaza por una lista ordenada alfabéticamente de nombres de archivos que coinciden con el patrón.
y desde el nodo de información para ls
El programa 'ls' enumera información sobre archivos (de cualquier tipo, incluidos directorios). Las opciones y los argumentos de archivo se pueden mezclar arbitrariamente, como de costumbre.
Para los argumentos de la línea de comandos que no son opciones que son directorios, de forma predeterminada 'ls' enumera el contenido de los directorios, no de forma recursiva, y omite archivos con nombres que comienzan con '.'. Para otros argumentos no opcionales, de forma predeterminada, `ls 'enumera solo el nombre del archivo. Si no se especifican argumentos que no sean opciones, 'ls' enumera el contenido del directorio actual.
así que cuando das ls d*
, d * se expande a la lista ordenada de todos los nombres de archivo / directorio que comienzan con d. Entonces tu comando se convierte
ls dump
y como dump es un nombre de directorio, entonces obtienes la lista de todos los archivos en el directorio "dump" pero cuando das ls D*
, D * se expande a " Dropbox de descargas de documentos de escritorio ", por lo que el comando se convierte en
ls Desktop Documents Downloads Dropbox
y como todos estos son directorios, obtienes la lista de archivos en un directorio individual. Si hubiera un archivo que comenzara con D en el directorio actual, se habría enumerado por separado.