Для меня с GNU find в Linux я получаю оба заказа с разными тестовыми прогонами.
Тестовый случай:
rm -rf /tmp/depthtest ; mkdir -p /tmp/depthtest ; cd /tmp/depthtest ; for dir in 1 2 3 . ; do mkdir -p $dir ; touch $dir/.note ; done ; find . -iname '.note'
С помощью этого теста я получаю первый результат автора.Обратите внимание на порядок 1 2 3 .
.Если я изменю этот порядок на . 1 2 3
rm -rf /tmp/depthtest ; mkdir -p /tmp/depthtest ; cd /tmp/depthtest ; for dir in . 1 2 3 ; do mkdir -p $dir ; touch $dir/.note ; done ; find . -iname '.note'
, я получу второй результат автора.
В любом случае добавление -depth для поиска ничего не дает.
РЕДАКТИРОВАТЬ:
Я написал Perl Oneliner, чтобы посмотреть на это дальше:
perl -e 'opendir(DH,".") ; print join("\n", readdir(DH)),"\n" ; closedir(DH)'
И я запустил это с / tmp / deeptest после запуска тестового примера 1 с этимирезультаты:
.
..
1
2
3
.note
Я запустил его снова после теста 2 со следующими результатами:
.
..
.note
1
2
3
, который подтверждает, что результаты находятся в порядке каталога.
* 1028Параметр * позволяет найти только элементы управления, например, обрабатывается ли ./1/.note
до или после ./1/
, а не является ли ./.note
или. /1/
первым, поэтому порядок результатов основан исключительно на порядке каталогов (который в основном создаетсяпорядок).
Может быть полезно взглянуть на Как мне рекурсивно перечислить все каталоги в определенном месте, в ширину? , чтобы узнать, как обойти эту проблему.