У меня есть сотни папок, и каждая папка содержит тысячи файлов. Я хочу определить "первый" файл среди всех файлов всех папок, "сначала" определяемых лексикографическим порядком имен файлов (исключая пути). Например:
/a/abc.txt
/b/aac.txt
/b/bxz.txt
Затем результат должен быть aac.txt
.
Я в настоящее время использую это:
find . -iname "*" -printf "%f\n" | sort | head
Но это довольно медленно. Существует ли лучшее решение?
Я не думаю, что можно сделать его намного быстрее, поскольку необходимо сначала получить вывод find
, который является самой долгой операцией, и только тогда передайте его по каналу до sort
и head
.
И если Вы даже полагаете, что соединение некоторого кода заставляет его работать быстрее, я думаю, что улучшение (если таковые имеются) по использованию find
было бы незначительно когда по сравнению с количеством времени, требуемым записать его и сделать его более эффективным, чем find
.
, Если это не что-то, которое Вы регулярно делаете и набор данных огромен (тысячи не то, что многие), я не провел бы свое время на нем на вашем месте.