Section 1.5: 파일 이름과 내용에 해당하는 패턴을 통해 파일 검색하기

Linux 에서 커맨드라인 (쉘) 을 사용하는 사용자들이 빈번하게 수행하는 작업 중 하나는 바로 파일 혹은 디렉토리를 그 이름이나 포함하는 내용을 기준으로 검색하는 것이다. 이러한 작업을 수행하기 위해서는 두가지 명령어가 유용하게 사용된다:

파일을 이름으로 검색하기

find /var/www -name '*.css'

위 명령어는 /var/www 디렉토리 아래의 파일 중 .css 로 끝나는 모든 파일들의 전체 경로 및 파일 이름을 출력하여 줄 것이다. 출력 예제는 다음과 같다:

/var/www/html/text-cursor.css /var/www/html/style.css

추가적인 정보는 아래와 같이 확인할 수 있다:

man find

특정 문자열을 포함하는 파일들 검색하기

grep font /var/www/html/style.css

위 명령어는 주어진 파일 내에서 font 라는 패턴을 포함하는 모든 라인들을 출력해 줄 것이다. 출력 예제는 다음과 같다:

font-weight: bold; font-family: monospace;

또다른 예제:

grep font /var/www/html/

위 예제 실행 시, 예상대로 동작하지 않을 것이다. 실제 수행 결과는 다음과 같다:

grep: /var/www/html/: Is a directory

의도대로 검색을 수행하기 위해서는 -R 옵션을 이용하여 grep 으로 하여금 재귀적으로 동작하도록 하여야 한다:

grep -R font /var/www/html/

위와 같이 입력 시, 아래 예제와 유사한 결과를 확인할 수 있을 것이다:

/var/www/html/admin/index.php: echo '<font color=red><b>Error: no dice</b></font><br/>'; /var/www/html/admin/index.php: echo '<font color=red><b>Error: try again</b></font><br/>'; /var/www/html/style.css: font-weight: bold; /var/www/html/style.css: font-family: monospace;

유의할 점은 grep 을 여러 파일들에 대하여 검색을 수행할 때, 검색된 각 라인의 앞에 파일 이름을 추가하여 출력해 준다는 것이다. 필요한 경우 -h 옵션을 이용하면 이러한 동작을 비활성화 할 수 있다.

추가적인 정보는 아래와 같이 확인할 수 있다:

man grep
본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

+ Recent posts