2

У меня очень большая коллекция файлов. Когда я использую команду find, я уверен, что в этой коллекции только один файл. Чтобы ускорить все мои команды поиска, я бы хотел запустить команду find только до тех пор, пока она не найдет один файл. Мне не нужно ждать больше файлов. Может быть, какой-нибудь скрипт bash с перерывами ....

Есть идеи как это сделать?

3 ответа3

5

С GNU find вы можете использовать опцию -quit .

Например, следующая команда напечатает первый найденный текстовый файл и затем выйдет.

find . -name "*.txt" -print -quit
0

Попробуйте прочитать руководство (man find):

-уволиться

Выйти немедленно. Дочерние процессы не останутся запущенными, но никакие пути, указанные в командной строке, не будут обрабатываться. Например, команда find /tmp /foo /tmp /bar -print -quit напечатает только /tmp /foo. Любые командные строки, которые были созданы с помощью -execdir ... {} +, будут вызваны до того, как будет найден выход. Состояние выхода может быть или не быть нулевым, в зависимости от того, произошла ли уже ошибка.

0

вы можете использовать find с sed:

[za@pc-02 ~]$ find ./ -iname  '[0-9]' | sed 1q
./1
[za@pc-02 ~]$ find ./ -iname  '[0-9]'
./1
./3
./2
[za@apc-02 ~]$ ls
1  2  3  vim

sed 1q - означает, что вам нужна только одна строка, которая выдает find, если вам нужно более одной строки, напишите это 10q(10 строк)

[0-9] это регулярное выражение означает совпадение только с одной цифрой в диапазоне 0-9

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