find와 grep 명령어를 사용하여 가능합니다.
두가지 방법이 있는데
1. find, xargs 이용하여 하위 디렉토리 검색
특정한 디렉토리 내의 파일과 디렉토리가 공존할 때, grep 명령어는 디렉토리에 대해서는 검색하지 못하게 된다. 이 때, find 명령어와 xargs 명령어를 조합하여 사용하면 원하는 문자열을 포함하는 파일들을 검색할 수 있다. 예를 들어 syslog라는 문자열을 포함하는 파일들을 검색할 경우 아래와 같이 하면 된다.
# find . -type f | xargs grep -w syslog
2. grep 명령어를 사용하여 검색
1번과 같이 다른 명령어와 조합하여 사용하는 방법도 있지만 grep 명령어에서 제공하는 "-R" 옵션을 이용하여 지정한 디렉토리의 모든 하위 디렉토리까지 검색할 수 있다.
# grep -wR syslog *
참고로 다수개의 문자열을 검색할 경우에는 "egrep" 명령어를 이용하여 검색할 수 있다. 찾고자하는 문자열을 '( )'의 사이에 입력하며 "|"을 구분인자로 다수개의 문자열을 입력할 수 있다. 또는 "문자열패턴|문자열패턴"으로 사용할 수 있다. 예를 들면 /etc/passwd 파일에서 root, hanshin, linux 문자열을 동시에 찾는 경우 다음과 같다.
# egrep '(root|hanshin|linux)' /etc/passwd
여기서 egrep은 grep -E와 동일하다.
3. 하위 디렉토리 모두검색
# grep -nr [찾을 문자열] ./
예...
grep -R printf *.c
현재 디렉토리 하위 서브디렉토리까지 다 검색해서 확장자가 c로 끝나는 파일들중에 printf라는 문자열이 존재하는 파일을 출력하라..
또는, 라인번호까지 출력하려면 다음과 같이 -n을 함께 사용합니다.
grep -nR printf *.c
현재 디렉토리 하위 서브디렉토리까지 다 검색해서 확장자가 c로 끝나는 파일들중에 printf라는 문자열이 존재하는 파일을 라인번호와 함께 출력하라.. |