Подсчитать все каталоги в том числе скрытые в дереве с корнем в текущем каталоге .
либо
найти . -тип 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 соответствует всему, что выглядит как каталог, включая символические ссылки на каталоги.