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

При отображении каталогов с помощью ls -lих количество ссылок (второе поле в выводе) не менее двух: одно для имени dir и одно для .

$ mkdir foo
$ ls -l
total 2
drwxr-xr-x  2 user   wheel  512  4 oct 14:02 foo

Безопасно ли всегда предполагать, что количество ссылок выше 2 соответствует количеству подкаталогов в этом каталоге (.. ссылки)?

4 ответа

Решение

Хотя обычно вы можете использовать только символические ссылки на каталоги, которые не влияют на количество ссылок, в некоторых случаях жесткие ссылки возможны для каталогов (функция TimeMachine в IIRC OSX использует такие ссылки), поэтому это не всегда может быть гарантировано.

Вам будет безопаснее проходить сканирование с помощью ls а также grep (или возможно find) к wc команда для подсчета количества фактически представленных подкаталогов вместо того, чтобы пытаться угадать из текущего количества ссылок на каталоги.

Вы правильно заметили, что все каталоги содержат. и.., так что если вычесть два из вывода

ls -la | grep '^d' | wc -l

Вы должны получить количество каталогов в вашем текущем рабочем каталоге.

Это не отвечает на ваш вопрос о ls -l, но для этого я использую tree -d, он работает очень хорошо.

Я бы использовал найти

find ./foo -type d | wc -l

в конце концов с -maxdepth вариант

Другие вопросы по тегам