ls -d não fazendo o que me disseram que deveria

1

Ubuntu 14.04 LTS Máquina reta, sem inicialização dupla ou qualquer coisa.

Estou em ~/scratch Eu quero apenas uma lista de diretórios.

tree -dL 1

Entendi!

man ls diz:

-d List directories only instead of their contents.

info ls diz:

-d List just the names of directories...

Claramente, isso não está fazendo o que me disseram que deveria. O que eu não entendo?

    
por ReyKev 31.10.2015 / 06:14

2 respostas

3

Tente isso: ls -d */ ele listará os diretórios no diretório atual

    
por j0h 31.10.2015 / 07:36
2

ls -d irá listar entradas de diretório sem seu conteúdo, não é usado para mostrar apenas as entradas de diretório dentro de um diretório.

Um exemplo vai deixar você claro:

$ tree
.
├── egg
├── spam
└── test
    ├── new
    └── old


$ ls *
egg  spam

test:
new  old


$ ls -d *
egg  spam  test

Como você pode ver, o -d apenas garante que o conteúdo do diretório test não esteja sendo mostrado.

Como já foi mostrado em esta resposta , para mostrar apenas as entradas do diretório, você pode usar */ . O / após * garante que apenas os diretórios sejam mostrados:

$ ls -d */
test/

Isso é análogo a:

$ for i in *; do [[ -d $i ]] && echo "$i"; done
test
    
por heemayl 31.10.2015 / 10:06