Linux 에서 특정 텍스트를 포함하는 모든 파일을 어떻게 찾습니까?

39 m i& 길을 찾기 위해 노력하고, 내 모든 리눅스 시스템 파일을 텍스트 문자열을 포함하는 모든 스캔하려면 특정. # 39, m, 단순히 텍스트 파일 내의 구체화합니다 I& 찾고 있지 않은 파일 이름.

내가 어렸을 때 어떻게 이를 찾는 왔는지 이 솔루션을 통해 두 번:

find / -type f -exec grep -H 'text-to-find-here' {} \;

그러나 doesn& # 39, 빗나갔다. 모든 단일 파일 시스템에서 표시하십시오 보인다.

가까운 로만스였나 적절한 방법은 무엇일까요? 그렇지 않으면 어떻게 합니까? 이 매우 유용하게 사용할 수 있는 텍스트 파일을 찾을 수 있도록 문장열 약간만이라도 I& # 39 m, 몇몇 프로그래밍 프로젝트를 수행하는.

질문에 대한 의견 (7)
해결책

방법은 다음과 같습니다.

grep -rnw '/path/to/somewhere/' -e 'pattern'
  • '-r' 또는 '-r' 는 재귀,
  • '선' 은 (는) -n 수 있고,
  • 'w' 는 전체 단어 일치.
  • '-l' (소문자 L) 의 일치 파일을 파일 이름을 just give 추가할 수 있습니다.

이와 함께 ',', '제외할지 포함시키십시오 dir 제외시킵니다 사용할 수 있다', '기' 효율적인 검색:

  • 이 에서는 해당 파일을 검색할 수 있는 .c 또는 .h 확장장치:

& # 39 *. {c} - 네프, h = - 포함시키십시오 그렙 /path/to/somewhere/& # 39;; - e &quot pattern";

  • 그러면 지오 로 끝나는 파일을 모두 검색: 제외시킵니다 확장명은:

39, & # 39 /path/to/somewhere/& 네프 그렙 - 제외할지 *.o - =; - e &quot pattern";

  • 39 의 가능한 특정 디렉터리 it& 제외하려면 디렉토리에는 대행사를 본사를) 에서 'dir 제외시킵니다' 매개변수입니다. 예를 들어, 이렇게 하면, dir2/ dir1/ 제외할지 디렉토리 및 모두야 일치하는 *.dst/:

& # 39 dir1 = {} -, - dir 제외시킵니다 그렙 dir2, *.dst 네프 /path/to/somewhere/& # 39;; - e &quot pattern";

이 기능은 거의 동일한 목적을 달성할 수 있도록 잘 았겠습니다 가져다줄래요 같은 네거잖아

자세한 옵션 그렙 확인란 '남자'.

해설 (36)

'-' 그렙 일리 사용할 수 있습니다.

grep -Ril "text-to-find-here" /
  • '나' 는 대소문자 무시 (임의선택 고객의 경우).
  • 'R' 는 재귀.
  • 'l' 의 약자로, 파일 이름, 그 결과, 표시 &quot itself&quot 없습니다.
  • '/' 의 약자로 스크립트루트 시작하여 컴퓨터의.
해설 (29)

Ack 사용할 수 있습니다. 마치 그렙 의 소스 코드. 이 회사는 이를 통해 파일 시스템 전체를 검색할 수 있습니다.

Just do.

ack 'text-to-find-here'

In your 스크립트루트 디렉터리입니다.

정규 표현식, 대체하십시오 사용할 수도 있습니다 (파일, etc.

  • 업데이트 *

그냥 발견된 실버 서처, 즉 '보다' 에서 이 같은 패턴을 이기티뇨레 는 ack 하지만 3 5 배 심지어 절실해졌습니다.

해설 (3)

사용할 수 있습니다.

grep -r "string to be searched"  /path/to/dir

이 또한 'r' 는 재귀 등 하위 디렉토리 경로에 지정되었습니까 검색할 수 있다. 이 파일 이름을 확인할 수 있습니다 물론 줄을 문자열이 있는 파일을 인쇄합니다.

또는 명령 시도 중인 것과 유사한 (예: javascript 파일을 검색할 수 있는 모든 (*.js):)

find . -name '*.js' -exec grep -i 'string to search for' {} \; -print

이렇게 하면 파일을 텍스트 줄을 인쇄인쇄) 가 있는 것은 아니지만 인쇄인쇄 파일 이름.

이와 함께, 우리는 이 너무 명령을 쓸 수 있다.

  • rn &quot search&quot 문자열을 그렙 -;; /path/to/directory/or/file -r: 재귀적 검색 *
  • n: * 일치시킵니다 대한 행 번호 표시됩니다.
해설 (3)

이 사용할 수 있습니다.

grep -inr "Text" folder/to/be/searched/
해설 (2)

# Redboot*용 주어진 텍스트 파일 이름 목록

첫째, 내가 사용한 믿겠군 h '대신' '-l'. 또한 '\ {} 따옴표 안에 추가 시도할 수 있는 텍스트' 등이 뒤를 이었다.

find / -type f -exec grep -l "text-to-find-here" {} \; 

# (예:

39 의 말하도다 let& redboot*용 &quot, Apache License&quot 특정 텍스트 파일을 검색할 수 있습니다. 내에 디렉터리입니다. 다소 비슷한 결과를 아래에 표시됩니다 (출력입니다 따라 다를 수 디렉터리입니다 내용).

bash-4.1$ find . -type f -exec grep -l "Apache License" {} \; 
./net/java/jvnet-parent/5/jvnet-parent-5.pom
./commons-cli/commons-cli/1.3.1/commons-cli-1.3.1.pom
./io/swagger/swagger-project/1.5.10/swagger-project-1.5.10.pom
./io/netty/netty-transport/4.1.7.Final/netty-transport-4.1.7.Final.pom
./commons-codec/commons-codec/1.9/commons-codec-1.9.pom
./commons-io/commons-io/2.4/commons-io-2.4.pom
bash-4.1$ 

사례 제거하시겠습니까 예민한

이 사건에 대해 사용하지 않는 경우에도 같은 text&quot "; vs &quot TEXT&quot ',' -i '스위치 무시하려면 경우, 사용할 수 있습니다. 자세한 내용은 here 읽을 수 있습니다.

ᄋ "이번 도움이 됩니다.

해설 (4)

'그렙' (GNU 또는 BSD)

현재 폴더에서는 그렙 '검색' 재귀적으로 다음과 같은 도구를 사용할 수 있습니다.

grep -r "class foo" .

&lt, sup&gt, 참고: '-r' 검색 subdirectories.&lt /sup&gt 재귀적으로 -;;

글 로빙 구문을 사용하여 다음과 같은 특정 파일을 검색할 수도 있습니다.

grep "class foo" **/*.c

&lt, sup&gt, 참고: 글 로빙 옵션 ('') 를 사용하여 모든 파일을 검색하여 반복적으로 연장또는 통해 특정 패턴. 실행하십시오 활성하하려면 이 구문은: '-' s 글로브스타 쇼프트 제공합니다. /. 모든 파일을 사용할 수 있습니다. ',' 을 제외한 없이 숨겨져서 확장명으로) 또는 기타 pattern.&lt /sup&gt.

39, ve 의 경우, 해당 인수는 you& 오류가 너무 오래 사용하거나 '대신' 구문을 다음과 같은 찾습니다찾기 세분화하기 고려해보십시오 검색

find . -name "*.php" -execdir grep -nH --color=auto foo {} ';'

'립그레프' 또는 사용합니다.

'립그레프'

39, re apc® 있는 대규모 프로젝트 또는 you& 경우, 다음과 같은 대용량 파일을 콩지름에 립그레프 '대신'

rg "class foo" .

설치 단계 또는 소스 코드 진단트리로 체크아웃합니다 &lt, sup&gt, doc, 깃허브 프로젝트 페이지 .&lt /sup>;

39 의 it& 훨씬 빠른 시간에 다른 어떤 경쟁업체보다도 같은 도구를 GNU / BSD '그렙', '오이그', 'ag', '일일이', '승인', ['pt'] [12] 또는 이와 유사한 있기 때문에 빌드되는 상단형 Rust& # 39 의 regex 엔진 ( 유한 오토마타, simd, 공격적인 ipv6-literal. 검색: 매우 빠르게 하기 위해 사용하는 최적화.

이 때문에 '에 지정된 파일을 하나의 파일' 이기티뇨레 는 무시됨 패턴을 일치됩니다 글롭 패턴을 동시에 여러 경로가 될 수 있습니다.

일반적으로 다음과 같은 매개 변수를 사용할 수 있습니다.

  • '-i' - 검색: 구분하지 않습니다.
  • '-I' - 무시하시겠습니까 이진 파일.
  • 'w' - search for the 단어 (반대 부분 단어 일치).
  • Show the line) -n '-' 고객의 match). '-C' - '/' (예를 들어 'c5') - 캐시-코어 컨텍스트로 컨텍스트로 때문에 주변 코드를 볼 수 있습니다.
  • '자동' = - Mark 백업하도록 색상 일치하는 사용한다. '-' h (디스플레이 파일_이름 있는 텍스트 찾았습니다.
    • 표시합니다. 카운트입니다 일치 '-c' 이다. '' H 함께 사용할 수 있습니다.

[12): https://github.com/monochromegane/the_platinum_searcher

해설 (2)

39 그렙 ',' doesn& 경우 t 지원 재귀적 검색 '을 (를)', '찾기' xargs 결합할 수 있습니다.

find / -type f | xargs grep 'text-to-find-here'

이 형식은 보다 쉽게 기억할 수 있습니까 '찾기 - exec'.

이렇게 하면 출력입니다 컨텐트에서 파일 이름과 일치하는 선 (예:

/home/rob/file:text-to-find-here

옵션임 플래그 '그렙' 를 추가할 수 있습니다.

  • '검색' -i '- 대소문자 무시
  • '-l' 만 있는 출력 파일_이름 발견었습니다 일치시킵니다 -
  • '-' 만 있는 출력입니다 정합된 아닌 파일_이름) h 선
해설 (2)
grep -insr "pattern" *
  • '나'. 패턴 및 입력 파일을 모두 대소문자 무시 보여주었다.
  • 'n': 각 행의 출력입니다 접두어입니다 1 기반 줄 번호 입력 파일 안에서 함께.
  • 의 ': 존재하지 않는 또는 억제할지 대한 오류 메시지가 파일을 읽을 수 없습니다.
  • 'r': 모든 파일을 읽을 수 있는 각 디렉터리인 재귀적으로.
해설 (6)

&gt. Linux 에서 특정 텍스트를 포함하는 모든 파일을 어떻게 찾습니까? &gt. (.) &gt. &gt. 이 솔루션을 통해 왔는지 두 번: &gt. &gt. '- - - H & # 39 text-to-find-here& 찾기 / exec 그렙 타입 f # 39;; '\ {}.

  • Groupx 주로 사용하는 경우 추가 너회의 acrobatconnectcentral. 나으뇨 '-s' ('메시지 없음') 를 '말', '및' 2&gt 그렙 / dev / nulll 명령을 피하기 위해 발행한 '메시지' 와 ' * 권한이 많이 부정하였더라 그렙 찾기':
find / -type f -exec grep -sH 'text-to-find-here' {} \; 2>/dev/null
  • groupx * 는 표준 유닉스 계열 특정 텍스트 파일 검색 도구 - - 그렙 함께 검색할 때 플랫폼. 이 명령을 더 자주 결합됨 groupxxargs, by the way.

보다 빠르고 쉽게 같은 목적으로 도구가 있습니다 - 아래 참조. , # 39 에서 사용 가능한 플랫폼을 제공하는 것이 그들을 시험하노라 they& 물론, re:

보다 빠르고 쉽게 대안

  • 립그레프 * - 빠른 검색 도구를 수립하였습니다:
rg 'text-to-find-here' / -l
ag 'text-to-find-here' / -l
ack 'text-to-find-here' / -l

참고: 이 아니라 ',' 2&gt 추가할 수 있습니다 / dev / nulll 명령의세 숨기기 위해 많은 오류 메시지.

  • 경고 : # 39, t, t, 정말 can& 않으면 이를 피할 don& # 39 에서 검색 & # 39, / # 39, (루트 디렉터리) 피하기 위해 길고 비효율적이었습니다 검색! 그래서 & # 39 위 예에서 you& # 39 더 나은 복귀시킴 /& # 39;;; d 하위 &quot, /home&quot, 의해 이름 (예: 실제로 search.* 따라 할 수 있는
해설 (7)

39 라는 새로운 유틸리티에는 there&, s 는 실베스아처

sudo apt install silversearcher-ag

깃 (git) 및 기타 작동하잖아 긴밀한 협력을 통해 vcs. 그래서 니말은 won& # 39, t get a .git net/ 또는 어떤 다른 디렉터리입니다.

간단히 사용할 수 있습니다.

ag "Search query"

작업 및 it will do for you!

해설 (0)

'Pwd' 에서 사용할 수 있습니다, 하향 레커싱 모든 디렉토리 검색

grep -rnw `pwd` -e "pattern"
  • 업데이트 * 'Pwd' 생략하십시오 그렙 버전에 따라 사용할 수 있습니다. '.' 의 새 버전을 기본값입니다 그렙 경우는 없을 경우 디렉터리입니다 주어진 것 같습니다. 따라서:

, - e &quot pattern&quot 네프 그렙 ','

또는

'-' pattern&quot 그렙 네프 ";

위와 같은 일을 할 것이다!

해설 (10)

종료기:

find . -name "*.txt" | xargs grep -i "text_pattern"
해설 (1)

39 경우에도 사용할 수 없는 we& 그렙 ',' re 찾고 구체화하십시오.

단순히 실행

grep -RIl "" .

즉, 모든 텍스트 파일을 인쇄합니다 아웃해야 그 경로를 개뿐인 인쇄가능 자입니다.

해설 (1)

다음은 몇 가지 목록을 검색하는 데 사용할 수 있는 명령 파일.

grep "text string to search” directory-path

grep [option] "text string to search” directory-path

grep -r "text string to search” directory-path

grep -r -H "text string to search” directory-path

egrep -R "word-1|word-2” directory-path

egrep -w -R "word-1|word-2” directory-path
해설 (2)
find /path -type f -exec grep -l "string" {} \;

설명을 통해 설명

이 같은 파일을 찾을 수 있는 명령 및 기타 객체에는 디렉토리이며 주어진 경로를 찾을 수 있는 링크를 서브디렉토리가. # 39, t, 이 경우 해당 피레스나미스 마스크할 지정하십시오라는 don& 충족합니다 모든 디렉터리입니다 객체에는 열거합니다 한다.

-type f specifies that it should proceed only files, not directories etc.
-exec grep specifies that for every found file, it should run grep command, passing its filename as an argument to it, by replacing {} with the filename
해설 (0)

실버 서처 () 는 두터운 도구에서는 립그레프 수 있지만, 더 좋다.

Up on Windows, Linux, Mac, 작동하잖아 대해 쓴 해커 뉴스 몇 개월 전 (이 기능은 https://partner. microsoft. 앤드루 Gallant& # 39 의 블로그 있는 깃허브 https://partner.):

  • [립그레프 - 새로운 검색 도구를 명령행을] [2] *

[2]: 12564442? id = https://news.ycombinator.com/item

해설 (0)

종료기:

find / -type f -exec grep -H 'text-to-find-here' {} \;

루트 폴더에 있는 모든 파일 시스템, 때문에 '/' 검색할 수 있다.

가정 폴더에서는 사용:

find ~/ -type f -exec grep -H 'text-to-find-here' {} \;

현재 폴더에서는 사용:

find ./ -type f -exec grep -H 'text-to-find-here' {} \;
해설 (3)

이것은 희망을 도움을 받는다.

조금 더 많은 정보를 제공할 수 있는 '확장' 그렙 출력입니다 얻을 수 있는 텍스트 파일의 줄 번호, 예를 들어, 이 문제는 다음과 같이 해결할 수 있습니다.

find . -type f -name "*.*" -print0 | xargs --null grep --with-filename --line-number --no-messages --color --ignore-case "searthtext"

그리고 만약 당신이 어떤 파일 유형은 생각해냈어요 검색을 좁히십시오 검색할 수 있습니다 (이 경우 '스파스 확장명은 하락한 specifying 파일 형식' 또는 '오드프만' 파일:

find . -type f \( -name "*.pas" -o -name "*.dfm" \) -print0 | xargs --null grep --with-filename --line-number --no-messages --color --ignore-case "searchtext"

파선-짧은 설명은 옵션:

  1. '.' 에서 '찾기' 은 현행 디렉터리입니다.
  2. ',' ',' &quot 이름 &quot . . 모든 파일에 대해 \ (- 이름 ',' .pas &quot &quot. - o - 이름 ',' .dfm &quot &quot. ): '만' -o '또는', '또는' 로 지정된 파일을 .dfm .pas 'f' 를 지정하면 보았으매 파일내에서 불고 있다 3.
  3. 'print0 null' 의 '와' on the other side '' (파이프) 는 파일 이름을 찾기 '에서', '을 중요한 수준들과 반군지역 임베드됨 그렙' 이 '할 수 있도록 파일 이름에 공백을 있으므로 xargs' (the passing of 파일 경로와 파일_이름 그렙 치료할 수 없는 한 문자열, break it up on 각 공간.
해설 (1)

단순한 '찾기' 편리하게 사용할 수 있습니다. it in your /.bashrc 앨리어스가 '~' file:

alias ffind find / -type f | xargs grep

새로 시작 단말기 및 문제점:

ffind 'text-to-find-here'
해설 (0)