특정 단어를 리눅스의 파일에서 찾는 방법

기본적으로 대부분의 검색 도구는 파일 이름을 조회하지만, 가장 유명한 GNU 검색 프로그램인 grep은 올바른 플래그와 함께 파일 내부를 살펴봅니다. 여기서는 리눅스에서 파일에서 특정 단어를 찾는 방법을 보여줍니다.
목차
- grep을 사용하여 파일에서 특정 단어 찾기
- find를 사용하여 파일에서 특정 단어 찾기
- ack를 사용하여 파일에서 특정 단어 찾기
- GUI가 필요하신가요? Catfish 사용
- 자주 묻는 질문
추가 읽기: 리눅스에서 대형 파일 찾는 방법
grep을 사용하여 파일에서 특정 단어 찾기
기본적으로 grep은 파일 이름뿐만 아니라 파일 내용도 검색합니다. 이는 대부분의 리눅스 시스템에 포함되어 있으며, 배포판마다 일반적으로 동일합니다. 프로젝트의 파일 내용을 살펴보는 프로그래머는 ack와 같은 다른 명령을 실행하는 것을 선호할 수 있습니다.
파일 인코딩에 따라 grep이 항상 내부를 살펴볼 수는 없지만, 대부분의 텍스트 기반 형식에 대해 grep은 지정된 패턴을 위한 파일 텍스트를 검색할 수 있습니다.
grep -rw '/path/to/search/' -e 'pattern'-r플래그는 grep을 재귀 모드로 설정하여 지정된 디렉토리에 포함된 모든 디렉토리를 탐색합니다.-w플래그는 전체 단어 일치를 검색합니다. 이는 “red”가 “ red undant”나 “ti red”와 같은 문자串이 포함된 경우가 아닌 실제 단어 “red”와만 일치한다는 의미입니다. 이는 “red”가 비단어 구성 문자로 알려진 문자(즉, 문자, 숫자 또는 밑줄이 아닌 것)로 둘러싸여 있는 경우에만 검색합니다.-e플래그는 검색할 패턴을 나타냅니다. 기본적으로 정규 표현식을 지원합니다.
grep의 속도를 높이려면 --exclude 및 --include 플래그를 사용하여 특정 파일 유형으로 검색을 제한할 수 있습니다. 예를 들어, --exclude='*.csv'는 .csv 확장자를 가진 파일을 검색하지 않습니다. 반면 --include='*.txt'는 .txt 확장자를 가진 파일 내에서만 검색합니다. 이 플래그는 아래와 같이 grep 명령 바로 뒤에 추가할 수 있습니다:
grep --exclude='*.csv' -Rw '/path/to/search' -e 'pattern'지정된 디렉토리를 제외하려면 아래 형식을 따를 수 있습니다:
grep --exclude-dir='{dir1,dir2,*_old}' -Rw '/path/to/search' -e 'pattern'이 명령은 현재 작업 디렉토리에서 dir1, dir2 또는 패턴 *_old와 일치하는 이름의 모든 디렉토리에 대해 검색하지 않으며, 현재 작업 디렉토리의 다른 모든 파일에 대해 지정된 재귀적 전체 단어 일치를 검색을 실행합니다.
grep과 함께 사용할 수 있는 흥미로운 플래그
이제 grep에 대해 제대로 이해했으니, 명령에 추가할 수 있는 몇 가지 유용한 플래그를 소개합니다:
-i– grep이 대소문자를 구분하지 않고 검색하기를 원합니다. 예를 들어, “Kraken”을 검색하면 grep이 “kraken” 또는 “kRaken”과 일치하는 경우 결과를 반환합니다.-n– 일치 항목 옆에 행 번호를 표시합니다. 이는 특히 프로그래머나 대형 구성 파일을 살펴보는 사람에게 유용합니다.-R–-r와 마찬가지로 grep이 모든 하위 폴더를 재귀적으로 검색하지만, 이 특정 플래그는 기호 링크(단축키)를 따라갑니다.-s– 오류 메시지를 억제합니다. 존재하지 않거나 읽을 수 없거나 부적절한 권한을 가진 파일에 대한 많은 방해가 되는 오류가 발생하는 경우, 이 플래그를 추가하면 grep이 찾은 일치 항목만 표시할 수 있습니다.
추가 읽기: find 명령을 사용하여 리눅스에서 파일 찾는 방법
find를 사용하여 파일에서 특정 단어 찾기
find 명령의 구문은 grep보다 더 복잡하지만, 일부는 이를 선호합니다.
find . -name "*.php" -exec grep "pattern" {} ;이 명령은 find의 -exec 플래그를 사용하여 검색을 위해 찾은 파일을 grep에 전달합니다. 문법을 영리하게 배열하면 find의 빠른 파일 시스템 검색을 사용하여 검색하려는 특정 파일 유형을 찾고, 이를 grep에 파이프하여 파일 내부를 검색할 수 있습니다.
find는 파일 내용이 아닌 파일 이름만 검색한다는 점에 유의하십시오. 그래서 파일 텍스트와 내용을 검색하기 위해 grep이 필요합니다. 일반적인 grep 플래그는 -exec 플래그 내에서 완벽하게 작동해야 합니다.
ack를 사용하여 파일에서 특정 단어 찾기
ack 명령은 아마도 가장 빠른 검색 도구일지 모르지만, grep만큼 인기가 있지는 않습니다. 아래 명령은 현재 디렉토리 내에서 검색합니다.
ack 'pattern'특정 파일이나 디렉토리 내에서 검색하려면 해당 파일이나 완전 경로를 검색에 추가할 수 있습니다.
ack 'pattern' /path/to/file.txt추가 읽기: 리눅스에서 Python 버전 설치 및 관리하는 방법
GUI가 필요하신가요? Catfish 사용
터미널에 알레르기가 있다면, 모든 인기 있는 리눅스 배포판은 Catfish라는 다재다능한 GUI 응용 프로그램을 제공합니다. 이 프로그램은 특정 문자열에 대해 파일과 그 내용을 검색할 수 있게 해줍니다. 여기서 논의된 명령만큼 고급은 아니지만, 그래픽 인터페이스를 선호하는 사람들에게 귀중한 서비스를 제공합니다.

특정 단어에 대해 파일 내용을 검색하려면 Catfish의 오른쪽 상단 메뉴를 클릭하고 “파일 내용 검색”을 클릭합니다.
설정을 마친 후, 상단 바에 검색할 내용을 입력하고 Enter 키를 누릅니다. 그게 전부입니다!
추가 읽기: Su, Sudo Su, Sudo -s 및 Sudo -i의 차이점
자주 묻는 질문
grep 검색을 완료하기 전에 중단하려면 어떻게 하나요?
터미널에서 진행 중인 프로세스를 중단하려면, 키보드에서 Ctrl + C를 누르세요. 이 신호는 실행 중인 프로세스를 종료합니다. 때문에 터미널 에뮬레이터 내에서 일반 복사/붙여넣기 단축키를 사용할 수 없는 이유이기도 합니다.
파일 내용을 검색하는 파일 관리자가 있나요?
KDE Plasma 데스크탑 환경을 사용하는 경우, 기본 파일 관리자(Dolphin)는 이미 이 기능을 가지고 있습니다. 파일을 검색하기 위해 검색 버튼을 클릭하면 검색 바 아래에서 파일 이름과 파일 내용 사이를 선택할 수 있는 옵션이 있습니다.
파일 내에서 단어를 검색하고 싶다면 “내용”을 클릭하세요. grep을 사용하는 것만큼 고급은 아니지만, 일을 수행합니다.
grep의 다른 용도가 있나요?
Grep은 파일 시스템을 검색하는 데만 사용되지 않습니다! 흥미롭게도, 거의 모든 명령을 통해 파이프 처리하여 출력에서 검색할 수 있으므로 수동으로 무언가를 찾을 필요가 없습니다.
Grep은 명령 출력 필터링에 사용되어 더욱 관련성이 높은 정보를 보여줄 수 있습니다. 충분히 실험해보면 결국에는 컴퓨터를 진단하고 알아가는 기술을 익힐 수 있습니다!
모든 스크린샷은 Miguel Leiva-Gomez에 의해 촬영되었습니다.