По моему опыту find - лучший инструмент для поиска файлов или каталогов - особенно рекурсивно и в том числе имена файлов точек.
find -mindepth 1 -type d | wc -l
Вы можете немного оптимизировать, если вы только пишете и считаете одиночным символы для каждого совпадения:
expr $(find -mindepth 1 -type d -printf 1 | wc -c) - 1
Если вы хотите включить рабочий каталог в результат, установите -mindepth в 0 (или опустите его).