Linux

[grep] 검색 시 특정 디렉터리 제외

비번변경 2023. 7. 20. 19:02

개요

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

2022.03.03 - [grep] 대소문자 구분 없이 문자열 찾기

2022.03.04 - [grep] 특정 문자열 제외

 

위 글에 이어서 grep 사용 예시를 하나 더 적어둔다.

grep -r 옵션을 이용해 하위 디렉터리를 대상으로 검색을 수행할 때 특정 디렉터리는 검색에서 제외하고 싶다. 방법을 적어둔다.

 

grep --exclude-dir

grep 명령은 패턴과 일치하는 디렉터리를 제외하고 검색할 수 있도록 --exclude-dir 옵션을 제공한다. 단, -r 옵션과 함께 사용해야 한다.

grep
#   -r, --recursive           like --directories=recurse
#   -R, --dereference-recursive  likewise, but follow all symlinks
#       --exclude-dir=GLOB    skip directories that match GLOB

--include-dir와 같은 옵션은 제공하지 않는 것 같다.

 

 

사용 예시

/etc 아래의 하위 디렉터리 파일을 대상으로 family라는 키워드로 검색해보려고 한다.

cd /etc
grep -r family

패턴을 포함한 파일명만 뽑아내면 사진과 같다. 여기서 fonts라는 하위 디렉터리는 검색 대상에서 제외하려고 한다.

grep -r --exclude-dir=fonts family

검색 결과에서 fonts 디렉터리는 제외된 것을 확인할 수 있다. 여러 디렉터리를 제외할 때는 --exclude-dir 옵션을 여러 번 나열하면 되는 것 같다.

grep -r --exclude-dir=fonts --exclude-dir=u*  family

 

 

참고 문서

How can I exclude directories from grep -R?