Каталог рекурсии - PullRequest
       13

Каталог рекурсии

4 голосов
/ 11 сентября 2011

Если вам нужно рекурсивно пройтись по дереву каталогов, есть два способа сделать это:

  1. Создание путей по мере увеличения длины, ... / .../ ... и т. д.

  2. Используйте chdir для перехода в каждый каталог по мере его появления, чтобы вы никогда не имели дело с именами путей длиннее двух компонентов.

Первый метод кажется мне более очевидным и может быть более устойчивым к неблагоприятным событиям, таким как отключение чего-либо, пока вы находитесь на полпути.С другой стороны, просматривая код для утилиты GNU find , я замечаю, что она использует второй метод.Есть ли причина для этого?Есть ли преимущество второго метода, о котором я не думал?

Ответы [ 3 ]

3 голосов
/ 11 сентября 2011

Эмм ... фактически современная реализация, скорее всего, будет использовать вызовы

ftw - это сокращение от обход дерева файлов

См. Также очень полезный ресурс: http://rosettacode.org/wiki/Walk_a_directory/Recursively#Library:_POSIX

2 голосов
/ 11 сентября 2011

Метод 2, похоже, обрабатывает ситуации, когда компонент в пути переименовывается.

Он также запрещает кому-либо отключать каталог во время поиска;ядро откажется размонтировать каталог, если он используется, в том числе быть cwd какого-то процесса.

2 голосов
/ 11 сентября 2011

Я полагаю, что find использует метод 2, поскольку вы можете выполнять команды по ходу (с опцией exec)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...