개발관련/Linux

Linux에서 특정 텍스트가 포함 된 모든 파일을 찾는 방법

Rateye 2021. 6. 23. 10:31
728x90
반응형
질문 : Linux에서 특정 텍스트가 포함 된 모든 파일을 찾으려면 어떻게합니까?

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

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

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

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

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

답변

다음을 수행하십시오.

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

이와 함께 --exclude , --include , --exclude-dir 플래그를 사용하여 효율적인 검색을 수행 할 수 있습니다.

  • 확장자가 .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/how-do-i-find-all-files-containing-specific-text-on-linux
728x90
반응형