모든 소스 파일을 나열하는 방법 (* .c, * .cpp, * .h) 재귀 적으로 소스 파일 (* .c,

Linux / MinGW / Cygwin에 포함되어 있고 모든 하위 디렉토리에서 재귀 적으로 소스 파일 (* .c, * .cpp, * .h)을 찾고 싶습니다.

내 기본 아이디어는 find및을 사용 하고 grep있습니다. 그러나 주어진 파일 이름을 확인할 수있는 정규식을 작성하는 것은 * .c, * .cpp 또는 * .h가 쉽지 않습니다. 당신이 나를 도울 수 있습니까?



답변

이것은 작동해야합니다 :

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

답변

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

답변

나는 사용할 것이다 :

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

답변

빠르고 더러운 디렉토리 이름을 피하십시오 :

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

답변

약간 더 간단한 정규식을 사용할 수 있습니다.

find . -type f -regex ".*\.[ch]\(pp\)?$"

답변

나는 bash에서도 작동하는 mac pro를 사용합니다. 그러나 명령 줄을 입력 할 때마다 :

find -name

불법 옵션이라고합니다. 그래서 나는 그것을 다음과 같이 단순화했다.

find *.c *.cpp *.h

그리고 실제로 작동한다는 것을 알았습니다!