Eu posso encontrar os subdiretórios de um diretório
ls -d -- */
ou
ls -l | grep "^d"
mas ambos parecem indiretos, e eu imaginaria que haveria uma maneira padrão de encontrar apenas os diretórios. Existe uma maneira certa de fazer isso? E se não, algum desses fatores levará a comportamentos indesejáveis em casos extremos? (Links simbólicos, diretórios ocultos etc.)
fonte
find . -maxdepth 1 -type d
para que isso funcionasse no OS X Yosemite.find . -maxdepth 1 -mindepth 1 -type d
. Caso contrário, o diretório atual.
será incluído.FYI - Em ZSH (mas não BASH), você também pode fazer isso:
ls -d -- *(/)
; o(/)
modificador diz ao ZSH apenas para os diretórios glob.Dito isto, não é muito diferente da sua própria solução proposta (
ls -d -- */
) e está longe de ser padrão.Quanto à saída de
ls
(que provavelmente difere com base em outros sinalizadores):fonte
*(/)
expande para os diretórios não ocultos, enquanto se*/
expande para diretórios não ocultos ou links simbólicos para diretórios (ou pelo menos links simbólicos para caminhos para os quais podemos dizer que são diretórios).