Как вывести список всех исходных файлов (* .c, * .cpp, * .h)


15

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

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

Ответы:


14

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

find Linux/MinGW/Cygwin -name '*.c' -o -name '*.cpp' -o -name '*.h'


1

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

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

1
В моем macbook, скрипт без -Eничего не может найти. вам может понадобиться добавить -E (как расширенный), чтобы сделать его более переносимым, как find -E . -regex '.*\.(c|h|cpp)' -print. ;-)
Памбда

1

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

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

2
У этой команды есть три проблемы: 1. Она не найдет *.cppфайлы. 2. Он найдет *.|файлы. 3. Глобус раскроется, если в текущем каталоге есть соответствующие файлы. Цитирование предотвращает это.
Деннис


0

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

find -name

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

find *.c *.cpp *.h

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

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