6elkka
@6elkka

Как ограничить количество результатов вывода gnu find до конкретного числа?

Допустим, в bash требуется использовать только первый результат поиска утилиты find.
При этом не нужно искать всё, т. к. это может быть ресурсозатратно.

В man find я не нашёл ключей для ограничения количества результатов (только ограничения на глубину поиска).

Есть вариант использовать конвейер bash таким образом
first_result="$(find -name '*foo*' | head -n 1)"
чтобы find прекращал работу вместе с конвейером, который в свою очередь прекращает работу вместе с head.
Однако это решение не идеально, т. к. в конвейере find всё равно работает [немного] больше, чем надо и находит больше файлов.

Какое решение лучше этого (при каком find на самом деле ищет только один файл)?
  • Вопрос задан
  • 972 просмотра
Решения вопроса 1
sim3x
@sim3x
Для одного все просто
unix.stackexchange.com/questions/62880/how-to-stop...
With GNU or FreeBSD find, you can use the -quit predicate:
find . ... -print -quit

The NetBSD find equivalent:
find . ... -print -exit


для нескольких уже нужно писать код
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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