4

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

Есть вопросы и ответы о том, как сортировать результаты, найденные функцией find (см. Ниже). Тем не менее, мне интересно знать, есть ли способ find чтобы выполнить поиск в алфавитном порядке, потому что это было бы намного эффективнее, чем проходить через все это, а затем сортировать.

В идеале я могу указать команду для остановки после обнаружения n совпадений, но это вторично, потому что я также могу остановить команду вручную.

Как я могу получить файлы, найденные командной строкой 'find', упорядоченные по дате модификации в OS X? https://unix.stackexchange.com/questions/34325/sorting-the-output-of-find

2 ответа2

1

Порядок перечисления каталогов find определяется порядком записей, хранящихся в файловой системе.

Вы можете написать скрипт bash, который входит в каждый каталог и перечисляет необходимые файлы.

0

Вы можете попробовать:

find -type d -maxdepth 1 | sort -h | xargs find

find -type d -maxdepth 1 выводит список каталогов без рекурсии. Мы перенаправляем вывод в sort -h , чтобы отсортировать результаты ориентированным на человека способом. Сортированный список каталогов отправляется в xargs который использует их в качестве аргументов командной строки для окончательного find , который выполняет большую часть работы.

Я знаю, что вы хотели избежать сортировки, но AFAIK, find собирается пройти через файловую систему по порядку файловой системы.

Надеюсь это поможет.

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