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 ("Dot") 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.