Як перелічити всі вихідні файли (* .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.