Isso deve funcionar:
find Linux/MinGW/Cygwin -name '*.c' -o -name '*.cpp' -o -name '*.h'
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?
Isso deve funcionar:
find Linux/MinGW/Cygwin -name '*.c' -o -name '*.cpp' -o -name '*.h'
find -regex '.*/.*\.\(c\|cpp\|h\)$'
Eu usaria:
find . -regex '.*\.\(c\|cpp\|h\)$' -print
Rápido e sujo e evita nomes de diretórios:
find . -type f -name *.[c\|h]
Você pode usar um regex um pouco mais simples:
find . -type f -regex ".*\.[ch]\(pp\)?$"
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!