Можно ли с помощью find искать файлы нескольких типов?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

MiK13
Сообщения: 1288
ОС: Linux Debian

Можно ли с помощью find искать файлы нескольких типов?

Сообщение MiK13 »

Пример.
Есть некий проект и я хочу найти все файлы с исходниками, то есть *.c и *.h.
Я могу задать find . -name "*.[ch]"
А если у меня файлы *.cpp? Можно ли как-то их найти вместе с файлами *.h ?
Можно, конечно, сделать find . | grep -e \\.h$ -e \\.cpp$, но, может быть, можно обойтись только find?
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3133
ОС: Gentoo

Re: Можно ли с помощью find искать файлы нескольких типов?

Сообщение ormorph »

MiK13 писал:
09.01.2026 10:48
Пример.
Есть некий проект и я хочу найти все файлы с исходниками, то есть *.c и *.h.
Я могу задать find . -name "*.[ch]"
А если у меня файлы *.cpp? Можно ли как-то их найти вместе с файлами *.h ?
Можно, конечно, сделать find . | grep -e \\.h$ -e \\.cpp$, но, может быть, можно обойтись только find?

Shell

$ man find
Spoiler

Код: Выделить всё

       ( expr )
              Поскольку  круглые  скобки  специально используются в командной строке, то они должны быть заключены в кавычки. Во многих примерах на этой странице руководства для этой же цели
              также, вместо "(...)", используется обратная косая черта: "\(...\)".

       ! expr Истинно (True), если expr ложно (false). Этот символ ("!") также обычно нуждается в защите от интерпретации командной оболочкой.

       -not expr
              То же, что и ! expr, но не совместимо с POSIX.

       expr1 expr2
              Два выражения подряд объединяются подразумеваемым оператором -a (логическое И); значение expr2 не вычисляется, если значение expr1 "ложно" (false).

       expr1 -a expr2
              То же, что и expr1 expr2.

       expr1 -and expr2
              То же, что и expr1 expr2, но не совместимо с POSIX.

       expr1 -o expr2
              Логическое ИЛИ; expr2 не вычисляется, если expr1 имеет значение "истинно" (true).

       expr1 -or expr2
              То же, что и expr1 -o expr2, но не совместимо с POSIX.

       expr1 , expr2
              Список; всегда вычисляется как expr1 и expr2. Значение expr1 отбрасывается; значением  списка  является  значение  expr2.  Оператор  запятая  может  использоваться  для  поиска
              нескольких  различных  типов  объектов,  но  только один раз при перемещении по иерархии файловой системы. Действие -fprintf можно использовать для составления списка различных
              совпадающих элементов в нескольких разных выходных файлах.
Можно так:

Shell

$ find . -name "*.h" -o -name "*.c" -o -name "*.cpp"
А можно так:

Shell

$ find . \( -name "*.h" -o -name "*.c" -o -name "*.cpp" \)
А так вроде нейронки и так всё это могут ответить.
Спасибо сказали:
MiK13
Сообщения: 1288
ОС: Linux Debian

Re: Можно ли с помощью find искать файлы нескольких типов?

Сообщение MiK13 »

ormorph писал(а):
09.01.2026 11:34
MiK13 писал:
09.01.2026 10:48
Пример.
Есть некий проект и я хочу найти все файлы с исходниками, то есть *.c и *.h.
Я могу задать find . -name "*.[ch]"
А если у меня файлы *.cpp? Можно ли как-то их найти вместе с файлами *.h ?
Можно, конечно, сделать find . | grep -e \\.h$ -e \\.cpp$, но, может быть, можно обойтись только find?
Можно так:

Shell

$ find . -name "*.h" -o -name "*.c" -o -name "*.cpp"
Спасибо.
У меня была мысли задать -name несколько раз (по аналогии с -e в grep), но я не знал, что надо ещё и -o добавлять.
(хотя можно было догадаться по аналогии с or или and в tcpdump)
ormorph писал(а):
09.01.2026 11:34
А так вроде нейронки и так всё это могут ответить.
Наверняка могут. Но тут есть две проблемы:
  1. Надо сообразить как правильно сформулировать запрос
  2. У бесплатных версия очень ограничено количество запросов в сутки
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3133
ОС: Gentoo

Re: Можно ли с помощью find искать файлы нескольких типов?

Сообщение ormorph »

MiK13 писал:
12.01.2026 12:42
У бесплатных версия очень ограничено количество запросов в сутки
Вроде как deepseek этим не страдает. Так же есть уже готовые веб интерфейсы, которые работают без регистрации. Просто нужно поискать.
Спасибо сказали:
Kopilov
Сообщения: 957
ОС: [K]Ubuntu, Debian

Re: Можно ли с помощью find искать файлы нескольких типов?

Сообщение Kopilov »

MiK13 писал:
12.01.2026 12:42
Наверняка могут. Но тут есть две проблемы
Третья проблема: капец форумам
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3133
ОС: Gentoo

Re: Можно ли с помощью find искать файлы нескольких типов?

Сообщение ormorph »

Kopilov писал:
13.01.2026 10:28
Третья проблема: капец форумам
Тут неравён час как всему будет капец, не только форумам. Тут лучше уж не гадать.

Из всех возможных неприятностей произойдёт именно та, ущерб от которой больше. (Закон Мерфи)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21402
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Можно ли с помощью find искать файлы нескольких типов?

Сообщение Bizdelnick »

iУведомление от модератора Bizdelnick
Если хочется пофлудить, давайте делать это в соответствующем разделе.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: