Cómo enumerar todos los archivos de origen (* .c, * .cpp, * .h)


15

Me gustaría encontrar archivos fuente (* .c, * .cpp, * .h) que contengan en Linux / MinGW / Cygwin, y de forma recursiva en todos los subdirectorios.

Mi idea básica es usar findy grep. Sin embargo, construir una expresión regular que pueda verificar el nombre de archivo dado es * .c, * .cpp o * .h no es fácil. ¿Podrías ayudarme?

Respuestas:


14

Esto debería funcionar:

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


1

Yo usaría:

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

1
En mi macbook, el script sin un -Eno puede encontrar nada. Es posible que necesite agregar un -E (como extendido) para hacerlo más portátil, al igual que find -E . -regex '.*\.(c|h|cpp)' -print. ;-)
pambda

1

Rápido y sucio, y evita los nombres de directorio:

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

2
Hay tres problemas con este comando: 1. No encontrará *.cpparchivos. 2. Encontrará *.|archivos. 3. El globo se expandirá si hay archivos coincidentes en el directorio actual. Citar lo impide.
Dennis


0

Yo uso un Mac Pro que también funciona en bash. Pero cada vez que escribo en la línea de comando:

find -name

Dice opción ilegal. Entonces lo simplifiqué como:

find *.c *.cpp *.h

y encontré que realmente funcionó!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.