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


15

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

Minha idéia básica é usar finde grep. No entanto, a criação de uma expressão regular que pode verificar o nome do arquivo é * .c, * .cpp ou * .h não é fácil. Você poderia me ajudar?

Respostas:


14

Isso deve funcionar:

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


1

Eu usaria:

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

11
No meu macbook, o script sem a -Enão consegue encontrar nada. pode ser necessário adicionar -E (como estendido) para torná-lo mais portátil, assim como find -E . -regex '.*\.(c|h|cpp)' -print. ;-)
pambda

1

Rápido e sujo, e evita nomes de diretório:

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

2
Existem três problemas com este comando: 1. Ele não encontra *.cpparquivos. 2. Ele encontrará *.|arquivos. 3. O glob será expandido se houver arquivos correspondentes no diretório atual. Citar evita isso.
Dennis


0

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

find -name

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

find *.c *.cpp *.h

e achei que realmente funcionou!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.