15

Я хотел бы найти исходные файлы (* .c, * .cpp, * .h), которые содержатся в Linux/MinGW/Cygwin и рекурсивно во всех подкаталогах.

Моя основная идея заключается в использовании find и grep . Однако создание регулярного выражения, которое может проверить заданное имя файла, - это * .c, * .cpp или * .h. Не могли бы вы помочь мне?

6 ответов6

13

Это должно работать:

find Linux/MinGW/Cygwin -name '*.c' -o -name '*.cpp' -o -name '*.h'
3
find -regex '.*/.*\.\(c\|cpp\|h\)$'
1

Вы можете использовать немного более простое регулярное выражение:

find . -type f -regex ".*\.[ch]\(pp\)?$"
1

Я хотел бы использовать:

find . -regex '.*\.\(c\|cpp\|h\)$' -print
1

Быстро и грязно, и избегает имен каталогов:

find . -type f -name *.[c\|h]
0

Я использую Mac Pro, который также работает в Bash. Но каждый раз, когда я печатаю в командной строке:

find -name

это говорит о нелегальном варианте. Так что я просто упростил это как:

find *.c *.cpp *.h

и нашел, что это действительно работает!

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