[Linux] grep과 옵션을 이용해 현재 및 하위 폴더 파일들에서 문자열 혹은 내용 찾기

grep과 옵션을 이용해 현재 및 하위 폴더 파일들에서 문자열 혹은 내용을 찾아보자.


환경

  • Linux 기반 시스템
  • Bash shell(/bin/bash)


grep 명령어

grep 명령어란?

grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
  • grep: 어떤 주어진 패턴에 맞는 문자열을 출력해주는 명령어입니다. 다양한 옵션과 방법으로 많이 사용합니다.


r과 n옵션으로 하위 파일들 내용 모두 검색하기

사용법

  • 찾고자하는 폴더 또는 경로에서 아래 명령어를 사용
grep -rn [PATTERN]

기본 예제

  • -r: 하위 폴더에 있는 파일까지 모두 검색해주는 옵션
  • -n: 해당 패턴이 일치하는 줄도 같이 출력해주는 옵션
$ grep -rn "abc def hij"
test/test_ascii.txt:2:abc def hij

여러 패턴 찾기

  • -e: 여러 패턴을 찾을 수 있게 해주는 옵션 => OR
$ grep -rn -e "send" -e "test"
.gitignore:41:# Unit test / coverage reports
.gitignore:47:nosetests.xml
.gitignore:51:.pytest_cache/
smc_on_in_text:13:0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
smc_on_in_text:14:50 10 * * 3 python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
...

특정 패턴 제외하기

  • -v: 특정 패턴을 제외해주는 옵션
$ grep -rn -e "send" -e "test" | grep -v ".gitignore"
smc_on_in_text:13:0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
smc_on_in_text:14:50 10 * * 3 python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
reminder.py:6:def sendMail(sender_email, receiver_email, app_password ,msg):
reminder.py:9:    smtp.login(sender_email, app_password)
...

특정 폴더들 지정하기

  • 다음처럼 특정 패턴들과 함께 폴더들을 지정할 수 있습니다.
$ grep -rn -e "def sednMail" -e "with open" MailReminder ./test/neutron
MailReminder/reminder.py:19:with open('/home/twpower/MailReminder/account.json') as account_json_file:
./test/neutron/doc/source/contributor/internals/quality_of_service.rst:349:combination with openflow rules.
...


참고자료