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


2

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

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

linux  ubuntu  find 

Ответы:


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


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

дополнено кратким объяснением
Дмитрий Загорулькин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.