Linux

grep - 디렉터리에서 키워드를 포함한 파일 찾기

비번변경 2021. 7. 17. 01:09

grep은 문자열 검색 명령어로, 입력으로 받은 파일 내용에서 키워드가 포함된 행을 출력해준다.

 

친근하고 좋은 명령어지만 아무 옵션 없이, 파일도 하위 디렉터리도 많은데, 어떤 파일에서 해당 키워드가 있는지도 모르는 경우에는 상당히 난감해진다. 일일이 파일을 열어봐야 하기 때문이다.

이럴 때는 여러 파일을 입력하거나, 옵션을 지정하면 간단하게 문제를 해결할 수 있다.

 

1. 여러 파일 입력

grep '<KEYWORD>' <FILE> <FILE>…

grep 여러 파일 입력

입력한 두 파일 중에서 import라는 문자열이 포함된 파일은 send_attachment.py라는 파일이라는 것을 알 수 있다.

 

이 방법도 파일 이름을 직접 지정해야 하기 때문에 다소 불편하다. 이런 경우에는 *(와일드카드)를 활용하면 좋다.

grep '<KEYWORD>' *<FILE_PATTERN>*

# 예시
grep 'example' *.txt

grep 와일드카드 사용

문자열 .py를 포함하는 파일명을 가진 파일들을 입력으로 주었다.

 

2. -r 옵션 사용

디렉터리 아래의 모든 파일을 입력으로 지정한다.

grep -r '<KEYWORD>'

grep -r

/home/ec2-user 디렉터리 내 self.msg라는 문자열이 포함된 파일이 text_mail.py와 mail_sender.py라는 것을 알 수 있다.

 


 

아래는 기타 grep 사용 방법을 정리한 것이다. 무시해도 좋다.

  • 문자열로 시작하는 행
    grep '^<KEYWORD>'
    grep ^
  • 여러 문자열 한 번에 찾기
    grep '<KEYWORD>\|<KEYWORD>'​
    grep \&#124;
  • 위/아래 행 추가 출력
    # 아래로 n행 추가 출력
    grep -An '<KEYWORD>'
    
    # 위로 n행 추가 출력
    grep -Bn '<KEYWORD>'
    
    # 위아래로 행 추가 출력
    grep -An -Bn '<KEYWORD>'
    grep 행 추가 출력
728x90