linux - 파일명만 - 리눅스 에서 특정 문자열 포함 된 파일 찾기




grep이지만 특정 파일 확장자 만 (8)

특정 디렉토리를 grep 하기 위해 일부 스크립트를 작성하고 있지만이 디렉토리에는 모든 종류의 파일 유형이 들어 있습니다.

나는 .h.cpp 를 현재 grep 하고 싶지만, 앞으로는 몇 가지 다른 것들을 원할 것입니다.

지금까지 나는 가지고있다 :

{ grep -r -i CP_Image ~/path1/;

grep -r -i CP_Image ~/path2/;

grep -r -i CP_Image ~/path3/;

grep -r -i CP_Image ~/path4/;

grep -r -i CP_Image ~/path5/;} 

| mailx -s GREP [email protected]

이제는 특정 파일 확장자를 추가하는 방법을 보여줄 수 있습니까?


HP 서버와 Sun 서버에는 -r 옵션이 없습니다.이 방법은 HP 서버에서 저에게 효과적입니다.

find . -name "*.c" | xargs grep -i "my great text"

-i는 문자열의 대소 문자를 구분하지 않고 검색합니다.


가장 쉬운 방법은

find . -type  f -name '*.extension' | xargs grep -i string 

나는이 질문이 약간 날짜가 있다는 것을 알고 있지만, 나는 보통 .c.h 파일을 찾기 위해 내가 사용하는 방법을 공유하고 싶다.

tree -if | grep \\.[ch]\\b | xargs -n 1 grep -H "#include"

또는 회선 번호도 필요하면 다음을 수행하십시오.

tree -if | grep \\.[ch]\\b | xargs -n 1 grep -nH "#include"

아래 답변은 좋다.

grep -r -i --include \*.h --include \*.cpp CP_Image ~/path[12345] | mailx -s GREP [email protected]

그러나 다음과 같이 업데이트 될 수 있습니다 :

grep -r -i --include \*.{h,cpp} CP_Image ~/path[12345] | mailx -s GREP [email protected]

어느 것이 더 간단 할 수 있습니다.


이 중 일부는 너무 구문이 무거워 보였거나 데비안 서버에서 문제가 발생했습니다. 이것은 나를 위해 완벽하게 작동했습니다.

PHP 혁명 : Linux에서 파일을 Grep하는 방법은 있지만 특정 파일 확장명은 어떻게해야합니까?

즉:

grep -r --include=\*.txt 'searchterm' ./

... 또는 대소 문자를 구별하지 않는 버전 ...

grep -r -i --include=\*.txt 'searchterm' ./
  • grep : 명령

  • -r : 재귀 적으로

  • -i : ignore-case

  • --include : all * .txt : 텍스트 파일 (파일 이름에 별표가있는 디렉토리가있는 경우 \를 사용하여 이스케이프 처리)

  • 'searchterm' : 검색 대상

  • ./ : 현재 디렉토리에서 시작하십시오.


이것은 파일 찾기 의 문제이므로 찾기를 사용합시다!

GNU를 사용하면 확장명이 .h 또는 .cpp 인 디렉토리 트리에서 -regex 옵션을 사용하여 파일을 찾을 수 있습니다.

find -type f -regex ".*\.\(h\|cpp\)"
#            ^^^^^^^^^^^^^^^^^^^^^^^

그러면 각 결과에 대해 grep 을 실행하는 것입니다.

find -type f -regex ".*\.\(h\|cpp\)" -exec grep "your pattern" {} +

이 배포판을 찾지 못했다면 Amir Afghani 와 같은 접근법을 사용해야합니다. -o 를 사용하여 옵션을 연결 합니다 (이름은 .h 또는 .cpp 끝남 ).

find -type f \( -name '*.h' -o -name '*.cpp' \) -exec grep "your pattern" {} +
#            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

그리고 정말로 grep 을 사용하려면 --include 지정된 구문을 따르십시오.

grep "your pattern" -r --include=*.{cpp,h}
#                      ^^^^^^^^^^^^^^^^^^^

ag (실버 검색 자)는이 간단한 구문을 사용합니다.

       -G --file-search-regex PATTERN
          Only search files whose names match PATTERN.

그래서

ag -G *.h -G *.cpp CP_Image <path>

grep -rnw "some thing to grep" --include=*.{module,inc,php,js,css,html,htm} ./






grep