Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

후레임의 프로그래밍

Linux에서 특정 텍스트가 포함 된 모든 파일을 찾으려면 어떻게합니까? 본문

스택오버플로우(Stack Overflow)

Linux에서 특정 텍스트가 포함 된 모든 파일을 찾으려면 어떻게합니까?

후레임 2020. 10. 26. 13:51
질문

특정 텍스트 문자열을 포함하는 모든 파일에 대해 전체 Linux 시스템을 검색하는 방법을 찾으려고 합니다. 명확히 하기 위해 파일 이름이 아닌 파일 내에서 텍스트를 찾고 있습니다.

이 작업을 수행하는 방법을 찾고 있을 때 이 솔루션을 발견했습니다.

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

그러나 작동하지 않습니다. 시스템의 모든 파일을 표시하는 것 같습니다.

올바른 방법에 가깝습니까? 그렇지 않다면 어떻게 해야합니까? 파일에서 텍스트 문자열을 찾는 이 기능은 내가 하고 있는 일부 프로그래밍 프로젝트에 매우 유용할 것입니다.



답변

다음을 수행하십시오.

grep -rnw '/path/to/somewhere/' -e 'pattern'
  • -r또는 -R은 재귀적입니다.
  • -n은 줄 번호이고
  • -w는 전체 단어 일치를 나타냅니다.
  • -l(소문자 L)을 추가하여 일치하는 파일의 파일 이름을 제공 할 수 있습니다.

이들과 함께 -exclude, -include, -exclude-dir플래그를 사용하여 효율적인 검색을 할 수 있습니다. < / p>

  • 확장자가 .c 또는 .h 인 파일 만 검색합니다.

    grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
          
  • .o 확장자로 끝나는 모든 파일 검색은 제외됩니다.

    grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
          
  • 디렉토리의 경우 -exclude-dir매개 변수를 사용하여 하나 이상의 디렉토리를 제외 할 수 있습니다. 예를 들어, 디렉토리 dir1 /, dir2 / 및 * .dst /와 일치하는 모든 디렉토리를 제외합니다.

    grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
          

당신과 거의 같은 목적을 달성하기 위해 저에게 매우 효과적입니다.

더 많은 옵션을 보려면 man grep을 확인하세요.



출처 : https://stackoverflow.com/questions/16956810