Краткая версия: есть ли команда и / или набор команд и / или утилита, чтобы узнать, какова максимальная глубина папок в моей файловой системе?

Длинная версия: я на Mac OS X. Я хотел бы знать, какая папка самая глубокая в моей системе (мне нет дела до прав доступа). Это потому, что я хочу запустить команду в корне / и она будет рекурсивной, и я не хочу, чтобы она зависала (неожиданные результаты). Поэтому мне нужно знать, сколько уровней папок находится между / и самой глубокой папкой.

Я искал в Google и на форумах, но не смог найти ничего убедительного. Я прочитал, что используемая файловая система HFS+ не имеет ограничений по глубине, но, возможно, есть ограничение по длине имени пути?

РЕДАКТИРОВАТЬ: Кто-то пытался заполнить фс, но это грязное решение ... Я бы хотел "чище", если это возможно. На самом деле, найти максимальную глубину в моей реальной системе было бы достаточно без проверки пределов.

Спасибо за вашу помощь !

3 ответа3

2

Следующее обходит всю файловую систему, ища только каталоги, удаляет все, что не является косой чертой (разделитель элементов пути), и печатает самый длинный след (по крайней мере, в моей системе поведение сортировки может зависеть от локали).

find / -type d | sed 's|[^/]||g' | sort | tail -n1

Подсчитайте полученную косую черту, которая является одной для каждого каталога, кроме корневого, поэтому, если бы самый глубокий путь к каталогу был /Users/danielbeck , результат был бы // . Конечно, в этом каталоге могут быть файлы.

1

На основании ответа Даниэля Бека , но для тех, кто любит счетные машины

find / -type d | sed 's|[^/]||g' | sort | tail -n1 | egrep -i -o / | wc -l

Если бы самый глубокий путь к каталогу был /Users/danielbeck , результат был бы 2

0

Самый простой способ ?

mkdir /a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/a

твой самый глубокий режиссер сейчас.

менее простой способ? Вероятно, что-то вроде:

for i in `find .`; do echo $i | tr -d -c '/\n' | wc -m >> /tmp/counts; done; sort -nr /tmp/counts | head -n 1

т.е.: показать все пути к файлам, вырвать все, что не /. Подсчитайте, сколько их было, затем покажите наибольшее число.

что-то вроде этого - не стесняйтесь улучшать его, почти наверняка можно избежать файла /tmp, используя какой-либо файл в памяти.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .