Назад | Перейти на главную страницу

Соответствует ли количество жестких ссылок на каталог количеству подкаталогов в нем?

При отображении каталогов с помощью 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 вариант