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


15

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

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

답변:


14

이것은 작동해야합니다 :

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


1

나는 사용할 것이다 :

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

1
내 맥북에서 스크립트 -E가 없으면 찾을 수 없습니다. 보다 확장 성을 높이기 위해 -E를 추가해야 할 수도 있습니다 find -E . -regex '.*\.(c|h|cpp)' -print. ;-)
pambda

1

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

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

2
이 명령에는 세 가지 문제가 있습니다. 1. *.cpp파일을 찾을 수 없습니다 . 2. *.|파일 을 찾습니다 . 3. 현재 디렉토리에 일치하는 파일이 있으면 glob가 확장됩니다. 인용은 그것을 막습니다.
Dennis


0

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

find -name

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

find *.c *.cpp *.h

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.