[Linux] 리눅스 현재 폴더부터 하위 폴더들까지 전부 검색하기

grep을 사용해 현재 폴더부터 하위 폴더들 중 특정 스트링을 포함한 파일을 전부 찾아내는 커맨드를 알아보자.




grep -rl "[검색 키워드]" .

 -r : Recursive (재귀). 하위 폴더가 있으면 하위 폴더도 검색.
 -l : 검색에 부합하는 모든 파일 검색.
 . : 현재 폴더 위치


예제

현재 폴더에서 글자  a 를 포함한 파일을 전부 검색:  grep -rl "a" . 

실행 결과:
./themes/aether/LICENSE.md
./themes/aether/README.md
./themes/aether/static/css/latolatinfonts.css
./themes/aether/static/css/style.css
./themes/aether/static/css/xcode.css
./themes/aether/static/font/LatoLatin-Black.eot
./themes/aether/static/font/LatoLatin-Black.ttf


특정 폴더 제외하기


커맨드는 보통 code base 전체를 검색할 때 사용하는데, 굳이 .svn이나 .git 폴더는 검색할 필요가 없다. 그럴 때 exclude-dir 파라미터를 사용한다. 아래는 .svn 폴더를 제외한 검색 결과텍스트 파일에 저장하는 방법입니다.

grep -rl "search text" . --exclude-dir=[제외할 폴더명] > [결과를 저장할 파일명]

 --exclude-dir : 검색에서 제외할 폴더 이름
 > : 결과를 파일로 저장하는 커맨드
[결과를 저장할 파일명]: 검색한 스트링을 포함한 파일들 리스트가 지정한 파일에 저장됨


예제

grep -rl "Hibernate" . --exclude-dir=.svn > SearchResults.txt