Pentru a număra toate directoarele inclusiv cele ascunse într-un arbore înrădăcinat în directorul curent .
fie
găsi . -type d -printf '\n' | wc -l
sau
găsi . -tip d -printf x | wc -c
(puteți înlocui orice caracter unic în locul lui X
: dacă alegeți un personaj care este special pentru coajă, asigurați-vă că îl citați sau scăpați de el). Folosind printf '\n' | wc -l
sau printf x | wc -c
în loc de a trece o listă de nume de fișiere către wc -l
se va asigura că numărul este corect chiar dacă există directoare ale căror nume conține linii noi.
Ambele comenzi includ directorul de pornire .
în numărare – dacă vrei să numeri strict subdirectoarele apoi fie scădeți 1, fie adăugați -profunzimea mintii 1
găsi . -mindepth 1 -type d -printf '\n' | wc -l
sau utilizați ! -Nume .
a exclude pe .
directorul în mod explicit.
Dacă doriți să excludeți directoarele ascunse (inclusiv posibil non-subdirectoare ascunse ale celor ascunse), apoi prună uscată ei ex.
find -mindepth 1 -type d \( -name '.*' -prune -o -printf x \) | wc -c
Alternativ, folosind globul recursiv al shell-ului pentru a traversa arborele. Folosind zsh, de exemplu
dirs=( **/(ND/) )
print $#dirs
Unde (ND/)
sunt calificative glob care fac **/
potrivește numai directoare și include ascunse ("D
ot") cele - omite D
dacă doriți să numărați numai directoarele neascunse.
Puteți face ceva similar în bash:
shopt -s nullglob dotglob globstar
set -f -- **/
printf „%d\n” „$#”
cu toate acestea, spre deosebire de zsh's /
calificativ, cel **/
modelul glob se potrivește cu orice care arată ca un director - inclusiv link-uri simbolice către directoare.