티스토리 뷰

반응형

목차

    배경

    상용 서버는 대부분 linux 환경에서 구동되는데, 서버 개발과 운영 모니터링을 하다보면 서버의 로그를 확인해야하는 순간들이 생긴다. 이때 직접 서버에 접속하고 로그 파일을 탐색하며 어느시기(대게 몇시 몇분 몇초 단위로)에 어떤 요청을 받고 어떤 에러를 뱉었는지 분석해야하는 순간들이 종종 발생하는데, 그때 linux의 파일 내용 검색 명령어를 활용하면 파일 탐색시간을 축소할 수 있고 그만큼 빠른 시간내에 로그를 분석하여 에러를 확인할 수 있다. 대부분 서버는 linux 환경에서 구동되기 때문에 동작 방식과 관련 명령어들을 숙지해두면 서버 로그 파일 탐색과 모니터링 이외에도 서버 개발과 운영을 하는데 많은 도움이 될 것 같다. 이번에는 그 중 linux 환경에서 파일 탐색을 하는데 쓰이는 기본적인 명령어와 옵션들을 정리해두었다.(mac os에서도 동일한 명령어로 동일한 동작이 가능하다.)

     

    내용

    기본적인 파일 탐색어 명령어로는 grep이 있고 그 역할과 사용할 수 있는 options은 다음과 같다.

     

    grep

    • 파일 내에서 또는 입력값으로부터 특정 패턴을 검색

    option

    • -v : 일치되는 내용이 없는 라인을 표시
    • -c : 일치되는 내용이 있는 행의 개수를 표시
    • -l : 일치되는 내용이 있는 파일 이름만 표시
    • -h : 일치되는 내용을 찾은 파일의 이름을 표시하지 않음
    • -n : 일치되는 내용이 있는 행은 행 번호와 함께 표시

    예시

    직접 예시를 통해 명령어 동작 방식을 살표보면 다음과 같다.

    먼저 현재 파일 경로는 ~/Desktop/linux/command_test이며 이 디렉토리에는 파일 검색을 테스트하기 위한 test1.txt 파일과 test2.txt 파일이 존재한다.

     

    두 파일의 내용은 다음과 같다.

    1. 전체 파일 대상으로 찾기

    실행 명령어는 다음과 같으며 현재 디렉토리를 기준으로 동작한다. (현재 디렉토리보다 상위 디렉토리에 대해서는 탐색할 수 없다)

    grep -r "찾을 문자열" ./*

     

     

    문자열 "a"가 포함된 파일명과 해당 문자열이 속하는 전체 행을 알 수 있다.

     

    2. 검색어로 사용된 "찾을 문자열"의 색을 다르게 표시

    위와 동일하지만 검색어로 사용된 문자열의 색을 빨간색으로 표시하고 싶다면 --color 옵션을 사용하면 된다.

    grep --color=auto "찾을 문자열" ./*

     

    3. 찾을 문자열이 포함된 파일명만 보기

    찾고자 하는 문자열을 포함하고있는 파일명만 보고싶다면 -l 옵션을 주면 된다.

    grep -l "찾을 문자열" ./*

     

    문자열 "a"는 test1.txt와 test2.txt 두 파일에 모두 포함되어 있기 때문에 ./test1.txt와 ./text2.txt 모두 출력되었고 문자열 "한글"은 test2.txt에만 포함되어 있기 때문에 ./text2.txt 만 출력된 것을 볼 수 있다.

     

    4. 특정 경로와 파일명을 명시하여 탐색

    특정 경로와 파일명을 명시하여 탐색하려면 linux의 find 명령어파이프(|), xargs 명령어를 혼합하여 사용하면 된다.

    find 경로 -name "파일명' | xargs grep "찾을 문자열"

     

    먼저 경로를 명시하여 탐색하기 위해 현재 디렉토리를 ~/Desktop/linux 로 이동하였다.

     ~/Desktop/linux 하위의 commed_test 디렉토리에 속하는 'test2.txt' 파일만들 대상으로 '문자'를 포함하는 행을 검색하였다.

    (검색 문자열을 다른색으로 표기하고 싶다면 앞서 소개한 --color 옵션을 주면된다)

    반응형
    Comments