Эффективное нахождение первого файла (в лексикографическом смысле) среди нескольких каталогов

У меня есть сотни папок, и каждая папка содержит тысячи файлов. Я хочу идентифицировать "первый" файл среди всех файлов всех папок, "первый" определяется лексикографическим порядком имен файлов (исключая пути). Например:

/a/abc.txt
/b/aac.txt
/b/bxz.txt

Тогда результат должен быть aac.txt,

Я в настоящее время использую это:

find . -iname "*" -printf "%f\n" | sort | head

Но это довольно медленно. Есть ли лучшее решение?

1 ответ

Я не думаю, что вы можете сделать это намного быстрее, так как вам нужно сначала получить вывод find которая является самой продолжительной операцией, и только потом ее можно пропустить sort а также head,

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

Если это не то, чем вы занимаетесь регулярно, и набор данных огромен (тысячи не так много), я бы не стал тратить на это свое время на вашем месте.

Другие вопросы по тегам