[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.
...