Это не вопрос, напрямую связанный с какой-либо частью программного обеспечения, а скорее вопрос о терминологии и определении глубины дерева каталогов.
Когда я смотрю на то, как находить . -maxdepth 0
работает кажется, что на глубине 0 только .
. А если и сделаешь найдешь. -maxdepth 1
находит все каталоги и файлы, которые находятся в каталоге .
.
Мне это кажется нелогичным. Я бы подумал, что любой каталог или файл, находящийся в корне данного пути, будет считаться находящимся на самой низкой глубине дерева, или depth = 0. Но это не похоже на Команда find
.
Возьмем следующий тип структуры каталогов:
/
/fileA.txt
/home
/home/fileB.txt
/home/user
/home/user/fileC.txt
/home/user/morefiles
/home/user/morefiles/fileD.txt
Что касается глубины каталога / дерева, какова глубина каждого файла относительно корневого каталога /
? Находится ли fileA.txt
на глубине 0 или 1? А как насчет каталога / home
? Это файл C. txt
на глубине 2 или 3? и т. д.
Я полагаю, что вопрос можно упростить до "Находятся ли файлы и папки в /
(например, /fileA.txt
) на глубине 0 или глубине 1?" И есть ли легкое для понимания объяснение того, почему это определено таким образом?
Из меню find
, maxdepth
определяется следующим образом.
-maxdepth 0
means only apply the tests and actions to the starting-points themselves.
Таким образом, файл или папка, которая находится в начальной директории, находится на глубине 1. В вашем конкретном случае fileA.txt
находится на глубине 1.
.
Ваш /home/user/fileC.txt
находится на глубине 3, так как /home
- это первый уровень, /home/user
- это второй уровень, и, наконец, /home/user/fileC.txt
- это третий уровень иерархии.
Что касается вашего вопроса Почему он определяется таким образом?, для меня просто имеет смысл, чтобы все файлы и папки были на 1 уровне относительно начала поиска и самой отправной точки на 0 уровне.
.
В IT часто начинают отсчет с 0 (нуля), например, очень часто на первый элемент в массиве ссылаются с 0 (нуля)
.
В shell
позиционный аргумент $0
относится к вызову shell или scriptname.