como listar apenas diretórios no Linux

o comando ls no Linux é usado para listar o conteúdo de qualquer diretório.

por padrão, ele Lista todo o conteúdo, seja um arquivo ou um diretório ou um link ou um pipe nomeado.

mas e se você quiser listar apenas os diretórios? Como estás?

como qualquer coisa no Linux, existem várias maneiras de realizar a mesma tarefa. Listar apenas os diretórios não é diferente:

  • ls-d */
  • ls-l | grep ‘^d’
  • encontrar . -maxdepth 1-type d
  • echo * /
  • tree-D-L 1

não te preocupes. Vou explicar as coisas em detalhes. Aqui está o conteúdo do diretório vou usar nos exemplos aqui:

Listando o conteúdo de um diretório no Linux

Usar o comando ls para listar os diretórios apenas

é sempre bom fazê-lo com o familiar comando ls, porque este é o comando que você usar para exibir o conteúdo de um diretório.

para listar apenas os subdiretórios, use a opção -d com o comando ls como este:

ls -d */

aqui está a saída que mostra:

 Documents]$ ls -d */another_dir/ my_dir/

por que */? Porque sem ele, ls -d retornará apenas o nome do diretório. Os diretórios da lista de opções -d não são seu conteúdo (que inclui arquivos, diretórios etc.).

o */ é um padrão. Com *, você lista todo o conteúdo (incluindo o conteúdo dos subdiretórios) e o / restringe o padrão aos diretórios.

esta imagem mostra a diferença muito bem.

apenas para a Lista de diretórios no Linux

Você pode combiná-lo com a listagem longa opção -l e mais outras opções:

 Documents]$ ls -ld */drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir/

Se você não quiser que a barra (/) no final dos nomes de diretório, você pode usar o comando recortar cortá-lo fora:

 Documents]$ ls -ld */ | cut -f1 -d'/'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir

Apenas para a lista de subdiretórios em um diretório específico

O comando acima funciona no diretório atual. E se você não estiver no mesmo diretório?

nesta situação, você pode usar */ no final do Caminho do Diretório com ls -d:

ls -d Path/To/Dir/*/

Aqui está um exemplo onde eu mover para fora do diretório de Documentos e, em seguida, listar somente os diretórios dentro do diretório de Documentos:

 ~]$ ls -ld Documents/*/drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 Documents/another_dir/drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 Documents/my_dir/

você notou que ele não lista o diretório oculto? Essa é uma lacuna desse método. Você pode usar ls -d .*/ para exibir diretórios ocultos, mas ele exibe apenas diretórios ocultos.

use a combinação de comando ls e grep

você sempre pode confiar no bom e velho comando grep para filtrar a saída para conteúdo específico.

se você listar o conteúdo por muito tempo, poderá identificar os diretórios porque comece com d.

Você pode usar o grep para filtrar o conteúdo que começam com d:

ls -l | grep '^d'

Mas isso dá a você muito mais campos do que apenas os nomes de diretório:

 Documents]$ ls -l | grep '^d'drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dirdrwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir

Use o comando localizar uma lista de diretórios

veja como usar o comando localizar para listar apenas os subdiretórios:

find directory_path -maxdepth 1 -type d

eu espero que você esteja familiarizado com o comando localizar. Vou explicar, no entanto.

com type d, você pede ao comando find para procurar apenas diretórios.

com maxdepth 1 você pede ao comando find para manter a pesquisa apenas no nível atual (e não entrar nos subdiretórios).

 Documents]$ find . -maxdepth 1 -type d../my_dir./another_dir./.my_hidden_dir
Lista sudirectories apenas com o comando localizar do Linux

Como você pode ver na saída acima, ele também mostra o diretório oculto.

use o comando tree para listar apenas diretórios

se o seu objetivo é listar apenas os diretórios, Você também pode usar o comando tree.

por padrão, o comando tree fornece a estrutura de diretório completa. Você pode modificá-lo para mostrar apenas diretórios e apenas no nível atual.

tree -dai -L 1
  • d – procurar somente pastas
  • um – olhar para os arquivos e diretórios ocultos, bem como
  • i – remover a estrutura de árvore do display
  • L 1 – não vá para os subdiretórios

Aqui está a saída:

 Documents]$ tree -dai -L 1.another_dirmy_dir.my_hidden_dir3 directories
Usando a árvore de comando para listar apenas os subdiretórios no Linux

Usando o comando echo para listagem de diretórios

O candidato improvável? Você ficará surpreso ao saber que o comando echo no Linux também pode ser usado para exibir o conteúdo de um diretório. Tente usar echo * e veja por si mesmo.

semelhante ao comando ls, você também pode usar o padrão */ para listar apenas os diretórios no diretório de trabalho atual.

echo */

Aqui está a saída, que é idêntico ao que você tem com o ls -d comando:

Usando o comando echo para lista de diretórios apenas na linha de comando do Linux

Não poderia ser mais maneiras para listar somente os diretórios, e não os arquivos. Na verdade, os métodos discutidos aqui podem ter alguns ifs e buts com base no que você está procurando.

se o seu objetivo é apenas exibir os diretórios, a maioria dos comandos que discuti funcionaria. Se você quiser algo mais específico, como apenas obter o nome dos diretórios com barra etc, você terá que fazer alguma formatação por conta própria.

espero que você ache essa dica do Linux útil. Perguntas e sugestões são sempre bem-vindas.

Write a Comment

O seu endereço de email não será publicado.