Подсчитать все каталоги в том числе скрытые в дереве с корнем в текущем каталоге . либо
найти . -тип d -printf '\n' | туалет -л
или же
найти . -тип d -printf x | туалет -с
(вы можете заменить любой символ вместо Икс: если вы выбираете специальный символ оболочки, обязательно заключайте его в кавычки или экранируйте). С использованием напечатать '\n' | туалет -л или же печать х | туалет -с вместо передачи списка имен файлов в туалет -л обеспечит правильность подсчета, даже если есть каталоги, имена которых содержать новые строки.
Обе команды включают начальный каталог . в счет - если хотите строго считать субкаталоги, затем либо вычтите 1, либо добавьте -глубина 1
найти . -mindepth 1 -type d -printf '\n' | туалет -л
или использовать ! -имя . исключить . каталог явно.
Если вы хотите исключить скрытые каталоги (включая возможные не-скрытые подкаталоги скрытых), то чернослив их экс.
find -mindepth 1 -type d \( -name '.*' -prune -o -printf x \) | туалет -с
В качестве альтернативы, используя рекурсивную подстановку оболочки для обхода дерева. Например, используя zsh
каталоги=(**/(НД/))
напечатать $#диров
куда (НД/) находятся квалификаторы глобуса это делает **/ сопоставлять только каталоги и включать скрытые ("Дot") - опускаем Д если вы хотите подсчитывать только нескрытые каталоги.
Вы можете сделать что-то подобное в bash:
shopt -s nullglob dotglob globstar
установить -f -- **/
printf '%d\n' "$#"
однако в отличие от zsh / квалификатор, **/ Шаблон glob соответствует всему, что выглядит как каталог, включая символические ссылки на каталоги.