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

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

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

Затем результат должен быть aac.txt.

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

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

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

1
задан 23 September 2014 в 07:42

1 ответ

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

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

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

1
ответ дан 11 November 2019 в 12:35

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

Похожие вопросы: