피카부 RSS 태그 관리 글쓰기 방명록 다시 시작하는 개발 블로그
2021-02-28 16:11:47

리눅스 등에서 파일의 내용중에 원하는 키워드나 문장을 검색하거나 할때  자주 사용하는 grep 명령어입니다.  아주 편리한 기능이지만 .log 파일등을 검색 대상에 포함시켜버리면 기껏 검색한 내용이 로그 내용으로 보기 어렵게 되어 버립니다.

 

이런경우는 .log 확장자는 제외시키커나 log 파일들이 있는 폴더는 제외하고 검색하는 편이 좋습니다.

저는 보통 제외보다는 .php 등으로 원하는 확장자를 지정해서 사용하는 편이 많습니다.

 

grep 명령어로 특정 확장자의 파일만 검색하는 방법

위에서 설명한대로 특정 확장자를 지정해서 검색하는 방법입니다. 이런 경우는 grep의 --include 옵션을 사용합니다.

$ grep -r --include='*.php' "foobar" /var/www/html

위 명령어는 '/var/www/html 디렉토리부터 하위 디렉토리 전부를 foobar 키워드가 있는 모든 php파일을 검색' 하는 명령어입니다.

-r은 재귀 함수로 서브 디렉토리도 검색하게 해줍니다.

 

grep 명령어로 특정 확장자를 제외하고 검색하는 방법

반대로 특정 확장자를 지정해서 제외해서 검색하는 방법입니다. 이런 경우는 grep의  --exclude 옵션을 사용합니다.

$ grep -r --exclude='*.html' "foobar" /var/www/html

위 명령어는 '/var/www/html 디렉토리부터 하위 디렉토리 전부를 foobar 키워드가 있는 모든 html파일을 제외하여 검색' 하는 명령어입니다.

역시 -r은 재귀 함수로 서브 디렉토리도 검색하게 해줍니다.

 

grep 명령어로 특정 디렉토리를 제외하여 검색하는 방법 

이번에는 grep 명령어로 특정 폴더 전체를 제외하고 검색하는 방법입니다. --exclude-dir 옵션을 사용합니다.

$ grep -r --exclude-dir='log' "foobar" ./

위 명령어는 현재 디렉토리부터 하위 디렉토리 전부를 log로 된 디렉토리를 제외하여 foobar 키워드가 들어간 파일을 검색하는 grep 명령어입니다.

 

제외 디렉토리를 복수 지정 하는 방법 (.git 폴더와 src 폴더 제외하기)

$ grep -r 'pikabu' ./ --exclude-dir={.git,src}

 

grep 명령어로 검색시 파일로 저장해서 보기

번외로 grep 명령어로 검색을 하면 실시간으로 화면이 위로 올라가서 검색 대상이 많은 경우 결국은 지워져버리는 경우도 있습니다. 이런경우 아예 화면출력을 하지 않고 파일로 저장하여 검색이 완료 되면 파일 내용을 확인하는 것이 편합니다.

 

이런 경우 grep 명령어의 가장 뒤에 ' > 파일명'을 붙여 주시면 됩니다.

$ grep -r --exclude-dir='log' "foobar" ./ > grep.log