Isso localizará o número de diretórios não ocultos no diretório de trabalho atual:
ls -l | grep "^d" | wc -l
EDITAR:
Para tornar isso recursivo, use a opção -R
para ls -l
:
ls -lR | grep "^d" | wc -l
Eu gostaria de imprimir o número de pastas (recursivas, excluindo pastas ocultas) em um determinado diretório CWD / current. Que comando ou série de comandos posso usar para verificar essas informações?
Na terra GNU:
find . -mindepth 1 -maxdepth 1 -type d -printf . | wc -c
em outro lugar
find . -type d ! -name . -printf . -prune | wc -c
No bash:
shopt -s dotglob
count=0
for dir in *; do
test -d "$dir" || continue
test . = "$dir" && continue
test .. = "$dir" && continue
((count++))
done
echo $count
echo $(($(find -type d | wc -l) - 1))
é unidirecional (subtrair 1 do wc -l para remover o diretório atual). Você pode ajustar as opções para encontrar para encontrar coisas diferentes.
echo $(($(find -type d -not -path '*/\.*' | wc -l) - 1))
- para excluir os diretórios ocultos
Como mencionei nos comentários, o coração dessa expressão é realmente find -type d
, que encontra todos os diretórios.
Observe que ela também encontra todas as subpastas - você pode controlar a profundidade usando o sinalizador -maxdepth
.
Você tentou o comando tree
?
tree -d /path/to/maindir| awk END{print}
Em zsh
:
(){echo $#} *(N/)
Recursivamente:
(){echo $#} **/*(N/)
Adicione os qualificadores D
glob se você também quiser contar diretórios ocultos.
equivalentes POSIX:
ls -p | grep -c /
(adicione a opção -A
a ls
para os ocultos)
Recursivamente:
LC_ALL=C find .//. ! -name . \( -name '.*' -prune -o -type d -print \) |
grep -c //
Ou
LC_ALL=C ls -Rqn . | grep -c '^d'
Para incluir os ocultos:
LC_ALL=C find .//. ! -name . -type d | grep -c //
ou:
LC_ALL=C ls -ARqn . | grep -c '^d'
find . -type d -not -path '.' -printf 0 | wc -c ;
Encontre recursivamente todos os diretórios (-type d) dentro do diretório atual (find.) que não é o diretório (.) e imprima 0 para cada diretório encontrado. Então wc -c
conta o número de caracteres (0) da saída do comando anterior.