найти ровно один файл в каталоге

2

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

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


источник

Ответы:

5

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

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

find . -name "*.txt" -print -quit
кендырь
источник
Спасибо. Это сработало хорошо.
0

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

-уволиться

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

iiSeymour
источник
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

Дмитрий Загорулькин
источник
этот ответ не очень полезен как есть. Может быть, вы можете сказать хотя бы несколько слов, чтобы объяснить, что вы на самом деле имеете в виду и как это отвечает на вопрос?
Mvp
дополнено кратким объяснением
Дмитрий Загорулькин