Como listar todos os arquivos de origem (* .c, * .cpp, * .h)

13

Gostaria de encontrar arquivos de origem (* .c, * .cpp, * .h) que contenham no Linux / MinGW / Cygwin e recursivamente em todos os subdiretórios.

Minha ideia básica é usar find e grep . No entanto, criar uma expressão regular que possa verificar o nome do arquivo fornecido é * .c, * .cpp ou * .h não é fácil. Você poderia me ajudar?

    
por Nullptr 14.02.2011 / 19:25

6 respostas

12

Isso deve funcionar:

find Linux/MinGW/Cygwin -name '*.c' -o -name '*.cpp' -o -name '*.h'
    
por 14.02.2011 / 19:34
2
find -regex '.*/.*\.\(c\|cpp\|h\)$'
    
por 14.02.2011 / 19:37
1

Eu usaria:

find . -regex '.*\.\(c\|cpp\|h\)$' -print
    
por 13.05.2011 / 17:49
1

Rápido e sujo e evita nomes de diretórios:

find . -type f -name *.[c\|h]
    
por 17.12.2013 / 15:48
1

Você pode usar um regex um pouco mais simples:

find . -type f -regex ".*\.[ch]\(pp\)?$"
    
por 18.07.2017 / 11:36
0

Eu uso um mac pro que também funciona no bash. Mas toda vez que eu digito na linha de comando:

find -name

diz opção ilegal. Então eu simplifiquei isso como:

find *.c *.cpp *.h

e descobriu que realmente funcionou!

    
por 04.11.2014 / 15:55

Tags