Como @Sparhawk explicou, o que está acontecendo é que você está listando o conteúdo dos diretórios. Isso não vai depender do * nix que você está usando, até onde eu sei, esse é o comportamento padrão do GNU ls
. Implementações não-GNU podem ser diferentes, mas eu duvido.
Quando você executa este comando:
ls /usr/include/*6*
O glob ( *6*
) é expandido pelo seu shell (bash por exemplo) antes chamando ls
. Então, dada a seguinte estrutura de diretório:
.
├── dir1
│ ├── file1
│ └── file2
└── dir2
├── file1
└── file2
ls d*
será expandido para ls dir1 dir2
e fornecerá os resultados esperados:
dir1:
file1 file2
dir2:
file1 file2
Por isso, ls
lida com diretórios de destino vários por padrão, ele lista cada diretório encontrado e, em seguida, o conteúdo desse diretório. No entanto, se você executá-lo em um único diretório, o nome não será impresso:
$ ls d*1
file1 file2
Portanto, como há apenas uma correspondência para o glob *6*
em /usr/include
e essa correspondência é um diretório, você está executando ls
com um único diretório como entrada e, portanto, está listando o conteúdo de o diretório sem incluir o nome do diretório.