Por que o comando 'ls -d' imprime apenas o '.' diretório?

6

Eu tentei man ls e, em seguida, obtive

-d, --directory

list directory entries instead of contents, and do not dereference symbolic links

Como diz o manual, -d significa listar todos os diretórios, mas quando eu digito ls -d Eu tenho

drwxr-xr-x 35 *user group* 4.0K *date* 00:16 .
    
por Chao Liao 14.08.2013 / 18:23

2 respostas

13

Como ls , por padrão, faz referência ao diretório atual. Esse é o caso de uso mais comum, afinal de contas: liste os arquivos no diretório atual.

O sinalizador "-d" apenas significa "não listar arquivos no diretório, apenas liste o próprio diretório".

    
por 14.08.2013 / 18:28
1

Se você deseja listar apenas os diretórios (não ocultos) dentro do diretório atual, tente usar find da seguinte forma:

find . -maxdepth 1 -type d -not -name "\.*"

Onde:

  • -type d foca apenas nos diretórios (que é o que eu suponho que você precisa)
  • -name "\.*" procura por arquivos ocultos ( \ é para escapar do caractere . )
  • -not nega a busca de arquivos ocultos, portanto, você está procurando por arquivos não ocultos
  • -maxdepth 1 evita ir dentro de subdiretórios adicionais
por 14.08.2013 / 20:15

Tags