Unix "찾기"명령을 사용하여 모든 CPP 및 H 파일을 찾는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/277999

  •  07-07-2019
  •  | 
  •  

문제

사용해야 할 모든 H 파일을 찾기 위해서는 다음과 같습니다. -name "*.h"그러나 모든 H 및 CPP 파일을 찾는 방법은 무엇입니까?

도움이 되었습니까?

해결책

find . -name \*.h -print -o -name \*.cpp -print

또는

find . \( -name \*.h -o -name \*.cpp \) -print

다른 팁

find -name "*.h" -or -name "*.cpp"

(서식으로 해석 된 별표를 보호하기 위해 편집)

폴 톰린 이미 훌륭한 대답을 제공했지만, 나는 당신이하고있는 일에서 패턴을 보았다고 생각했습니다.

언젠가 Grep으로 처리하기 위해 파일 목록을 생성하기 위해 Find를 사용할 가능성이 있으며, 그러한 작업에는 훨씬 더 사용자 친화적 인 도구가 있습니다. ACK

Perl을 지원하는 모든 시스템에서 작동하며 주어진 문자열에 대한 디렉토리의 모든 C ++ 관련 파일을 검색하는 것은 간단합니다.

ack "int\s+foo" --cpp 

"--cpp" 기본적으로 일치합니다 .cpp .cc .cxx .m .hpp .hh .h .hxx 파일

(또한 기본적으로 리포지토리 디스크를 건너 뜁니다. 파일처럼 보이는 파일에서 일치하지 않습니다.)

그것을 할 수있는 짧고 명확한 방법 find 이다:

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

남자 페이지에서 -regex: "이것은 검색이 아니라 전체 경로에서 일치합니다." 따라서 접두사가 필요합니다 .* 경로의 시작과 일치합니다 ./dir1/dir2/... 파일 이름 앞에.

find . -regex ".*\.[cChH]\(pp\)?" -print

이것은 Cygwin에서 나를 위해 잘 테스트되었습니다.

당신이 사용할 수있는 find 이 짧은 형태로 :

find \( -name '*.cpp' -o -name '*.h' \) -print

-print 생략 할 수 있습니다. 사용 -o 표현식간에 여러 유형의 파일을 찾고 동일한 작업을 수행하려는 경우 특히 유용합니다 (MD5SUM 계산이라고 가정 해 봅시다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top