Sei que já existe uma resposta selecionada, mas você pode obter o comportamento solicitado com apenas ls:
ls -ld -- */
(Observe que o '-' marca o final dos parâmetros, impedindo que os nomes de pastas que começam com um hífen sejam interpretados como outras opções de comando.)
Isso listará todos os diretórios não ocultos (a menos que você configure os globs do seu shell para expandi-los) no diretório de trabalho atual em que é executado (observe que ele também inclui links simbólicos para os diretórios). Para obter todos os subdiretórios de outra pasta, tente:
Agradável. Eu nunca considerei que os diretórios tenham implícito /no final - mas agora que vejo você responder, faz sentido. Afinal, o preenchimento de guias sempre o adiciona.
gvkv
-d for dir, -l for long format. qual é o propósito --?
Dineshkumar
11
Embora isso pareça curto e funcione na maioria dos casos, talvez você não queira usar essa abordagem quando um diretório verdadeiro for necessário, não o link simbólico de um diretório. Então, findna verdade, é uma boa escolha nesse caso.
Biocibernico
11
findtambém tem a vantagem quando o número de diretórios excede o tamanho máximo do argumento.
Steven D
Trabalhando para trás, eu só percebi que você pode simplesmente ignorar qualquer coisa com uma extensão: ls -alhF --ignore=*.*. Não tenho certeza como isso iria lidar com pastas 'ocultas', ou seja.myHiddenFolder
Timmah
14
Não, mas um findcomando simples fará isso:
find . -type d -depth 1
ou grep
ls -F | grep /
Você pode, então, aliasar um deles, se necessário.
No Ubuntu 14.04 foi -maxdepth 1. Também findme queria virar a ordem:find . -maxdepth 1 -type d
Brad Cupit
Essa ls -F | grep /solução faz maravilhas! Parece ser o único que posso trabalhar na minha máquina FreeBSD. Eu acho que usar Fish significa que qualquer coisa com */pode não funcionar?
Cjm 27/07/16
Eu nunca trabalhei com Fish, então não tenho certeza disso, mas a opção -F pode fazer maravilhas.
gvkv
7
Eu gosto do utilitário em árvore para obter uma visão geral da estrutura de diretórios. Está disponível no MacPorts e em todas as distribuições Linux que eu tentei.
tree -d -L 2
Isso mostraria todos os diretórios, com dois níveis de profundidade.
Com zsh(como encontrado por padrão no macOS, ele ainda estava /bin/shlá), você usaria qualificadores glob para selecionar arquivos com base em seu tipo:
Listar diretórios não ocultos:
ls -d -- *(/)
Listar todos os diretórios:
ls -d -- *(D/)
( .e ..sempre são excluídos, adicione-os individualmente, se desejar)
Inclua também links simbólicos para diretórios:
ls -d -- *(D-/)
( -faz com que outros qualificadores sejam aplicados após a resolução do link simbólico).
É bom saber que não sou a única pessoa que usa o grep "^d"hack
Michael Mrozek
6
Até onde eu sei, o comportamento que ele descreve não é um bug e é o mesmo se alguém estiver usando o GNU ls. A opção -d exibe a listagem do diretório e não o conteúdo. Para ver por que isso pode ser útil, veja a diferença entre: ls -l /homeels -dl /home
Steven D
Quilates não são especiais para a concha. Você pode apenas usar ls -l / | grep ^d. Se você estiver indo para usar aspas, já que você não precisa de expansão de parâmetros, fazê-los únicos aspas. ls -l / | grep '^d'. Sim, sou pedante. Mas realmente faça isso. :)
Caractere curinga
-1
$ ls -p | grep /
O -psinalizador fará lsadicionar uma barra (`/ ') após cada nome de arquivo, se esse arquivo for um diretório.
A maneira mais fácil é digitar o seguinte comando. Isso funciona na maioria das plataformas e versões UNIX e Linux. Você pode pular o -Fque desejar, mas é o argumento que adiciona o / ao final do nome do diretório. O -Cargumento captura apenas nomes de diretório - todos eles no diretório atual. Se você deseja ver apenas diretórios e subdiretórios no caminho atual, basta adicionar o -Rargumento ( ls -CFR).
Em todas as lsimplementações que conheço e, na especificação POSIX de ls, -Cé produzido em colunas , não pular arquivos não pertencentes ao diretório. No seu exemplo, eles /são impressos antes dos nomes dos arquivos, o que nenhuma lsimplementação faria. With -F, /é anexado ao nome do arquivo dos arquivos de diretório.
Stéphane Chazelas
Quando vi essa resposta, me perguntei: “Onde isso é verdade?” @ StéphaneChazelas e Jeff Schaller - você não descarta respostas flagrantemente erradas?
ls -d
dá apenas.
e por que*/
deve ser adicionado ao final para que funcione?ls
padrão será.
. E-d
significa não imprimir o conteúdo do diretório, imprimir o próprio diretório.ls -p
lo, mostra os/
nomes dos diretórios após. Portanto,*/
é apenas um padrão que corresponde ao nome do diretório e à/
combinação.Respostas:
Sei que já existe uma resposta selecionada, mas você pode obter o comportamento solicitado com apenas
ls
:(Observe que o '-' marca o final dos parâmetros, impedindo que os nomes de pastas que começam com um hífen sejam interpretados como outras opções de comando.)
Isso listará todos os diretórios não ocultos (a menos que você configure os globs do seu shell para expandi-los) no diretório de trabalho atual em que é executado (observe que ele também inclui links simbólicos para os diretórios). Para obter todos os subdiretórios de outra pasta, tente:
Observe que o -l é opcional.
fonte
/
no final - mas agora que vejo você responder, faz sentido. Afinal, o preenchimento de guias sempre o adiciona.-d for dir, -l for long format
. qual é o propósito--
?find
na verdade, é uma boa escolha nesse caso.find
também tem a vantagem quando o número de diretórios excede o tamanho máximo do argumento.ls -alhF --ignore=*.*
. Não tenho certeza como isso iria lidar com pastas 'ocultas', ou seja.myHiddenFolder
Não, mas um
find
comando simples fará isso:ou
grep
Você pode, então, aliasar um deles, se necessário.
fonte
-maxdepth 1
. Tambémfind
me queria virar a ordem:find . -maxdepth 1 -type d
ls -F | grep /
solução faz maravilhas! Parece ser o único que posso trabalhar na minha máquina FreeBSD. Eu acho que usar Fish significa que qualquer coisa com*/
pode não funcionar?Eu gosto do utilitário em árvore para obter uma visão geral da estrutura de diretórios. Está disponível no MacPorts e em todas as distribuições Linux que eu tentei.
Isso mostraria todos os diretórios, com dois níveis de profundidade.
fonte
Eu também precisava visualizar diretórios ocultos, então modifiquei a sugestão acima para atender às minhas necessidades
(dependendo do shell, isso também pode incluir
.
e..
)fonte
Com
zsh
(como encontrado por padrão no macOS, ele ainda estava/bin/sh
lá), você usaria qualificadores glob para selecionar arquivos com base em seu tipo:Listar diretórios não ocultos:
Listar todos os diretórios:
(
.
e..
sempre são excluídos, adicione-os individualmente, se desejar)Inclua também links simbólicos para diretórios:
(
-
faz com que outros qualificadores sejam aplicados após a resolução do link simbólico).fonte
Eu acho que ls tem um bug no Mac OS X. Uma solução alternativa é usar grep ...
ls -l / | grep "^d"
fonte
grep "^d"
hackls -l /home
els -dl /home
ls -l / | grep ^d
. Se você estiver indo para usar aspas, já que você não precisa de expansão de parâmetros, fazê-los únicos aspas.ls -l / | grep '^d'
. Sim, sou pedante. Mas realmente faça isso. :)O
-p
sinalizador faráls
adicionar uma barra (`/ ') após cada nome de arquivo, se esse arquivo for um diretório.fonte
A maneira mais fácil é digitar o seguinte comando. Isso funciona na maioria das plataformas e versões UNIX e Linux. Você pode pular o
-F
que desejar, mas é o argumento que adiciona o / ao final do nome do diretório. O-C
argumento captura apenas nomes de diretório - todos eles no diretório atual. Se você deseja ver apenas diretórios e subdiretórios no caminho atual, basta adicionar o-R
argumento (ls -CFR
).fonte
ls
implementações que conheço e, na especificação POSIX dels
,-C
é produzido em colunas , não pular arquivos não pertencentes ao diretório. No seu exemplo, eles/
são impressos antes dos nomes dos arquivos, o que nenhumals
implementação faria. With-F
,/
é anexado ao nome do arquivo dos arquivos de diretório.isso mostrará seus diretórios em azul
fonte