*
significa todos os arquivos e diretórios, incluindo arquivos em sub-diretórios.
/
significa no diretório raiz
ls */
traz arquivos em sub-diretórios no diretório atual (não inclui arquivos no diretório atual)
ls -d
listam entradas de diretório em vez de conteúdo.
Meu diretório cheio de arquivos e subdiretórios. Por que no meu caso isso traz apenas ./
?
Ao adicionar todos juntos, eu tenho ls */ -d
. Traz todos os diretórios no diretório atual. Qual é a lógica dessa combinação? Se eu pegar partes separadas deste comando, ele não traz esse resultado.
/
não significa diretório raiz. É um separador de caminho. Se o caminho começa com /
, então, é claro, você tem um caminho absoluto, que começa no nível raiz. Aqui, a barra vem depois de *
. O asterisco contém todas as entradas do diretório atual, mas aqui, o padrão é */
: everything no diretório atual que termina em /
; os arquivos não terminam em /
, mas terminar um caminho com uma barra significa que você especificou um diretório, portanto isso significa apenas diretórios. Compare com *.txt
, o que significaria todas as entradas terminadas em .txt
.