При отображении каталогов с помощью ls -l
, их количество ссылок (второе поле в выходных данных) не менее двух: одна для имени каталога и одна для .
$ mkdir foo
$ ls -l
total 2
drwxr-xr-x 2 user wheel 512 4 oct 14:02 foo
Можно ли всегда предполагать, что количество ссылок выше 2 соответствует количеству подкаталогов в этом каталоге (..
ссылки)?
это не отвечает на ваш вопрос о ls -l, но я использую для этого tree -d, он работает очень хорошо.
Вы правильно заметили, что все каталоги содержат. и .., поэтому, если вы вычтете два из вывода
ls -la | grep '^d' | wc -l
вы должны получить количество каталогов в вашем текущем рабочем каталоге.
Хотя обычно вы можете использовать только символические ссылки на каталоги, что не повлияет на количество ссылок, в некоторых случаях для каталогов возможны жесткие ссылки (функция TimeMachine IIRC OSX использует такие ссылки), поэтому это не всегда может быть гарантировано.
Было бы безопаснее пройти сканирование, используя ls
и grep
(или возможно find
) к wc
команда для подсчета количества фактически присутствующих подкаталогов, а не попытки угадать количество ссылок на текущие каталоги.
Я бы использовал найти
find ./foo -type d | wc -l
в конечном итоге с -maxdepth
вариант