Development /Unix.Linux

리눅스 검색 명령어( find, grep )

해피마루 2018. 8. 8. 14:37
728x90
반응형

 

리눅스 검색 명령어( find, grep ) 

 

 

파일 검색을 할때 사용하는 명령어 find

 

파일내 문자열 검색 명령어 grep

 

 

1. 파일, 디렉토리 검색 명령어 : find

 

  

 

사용1)  현재+하위 디렉토리의 모든 파일명, 디렉토리명 출력됨

    

        find . [검색문자열]

 

예제) find .    

      --> 현재 폴더의 파일, 하위폴더경로를 포함한 파일 등 리스트로 보여줌

 

      

      find . yes   

      --> 현재 폴더의 파일, 하위폴더경로를 포함한 파일 등 리스트로 보여주고 

          맨 하단에 yes 문자가 들어간 폴더명, 파일명으로 검색된 리스트를 보여줌

 

사용2) 특정 문자열을 포함하는 디렉토리 및 파일 검색 ( -name 옵션)

 

       find . -name "문자열"

 

       => 현재 폴더 이하에서 해당 문자열과 같은 이름을 가진 파일과 디렉토리 모두 출력 

 

       => 문자열을 포함하는 조건으로 검색시 *(모든 문자)와 ?(한 문자)사용

 

       => 파일 또는 디렉토리만 검색하도록 구분할때 -type옵션 사용 ( f 파일만 / d 디렉토리만)

 

 

예제) find . -name "yes.log"

 

      find . -name "*yes*"

 

      find . -name "yes*"            --> yes로 시작하는 파일명 검색

 

      find . -name "?yes.log"        --> yes앞에 한개 문자가 들어간 파일명 검색 

 

      find . -type f -name "*.log"   --> .log를 포함한 파일만 검색

 

 

 

사용3) 특정 문자열을 포함하지 않는 디렉토리 및 파일 검색 ( ! 옵션 사용 )

 

      find . -type f ! -name "문자열"

 

 

예제) find . -type f ! -name "*.log"  

 

      -->  .log문자(확장자)가 들어간 파일을 제외하고 검색하여 보여줌

 

반응형

사용4) 현재 디렉토리에서만 검색 ( -maxdepth 옵션 사용 )

 

      find -maxdepth [숫자] -type f

 

      => maxdepth옵션 뒤에 숫자를 이용해 원하는 depth까지 폴더를 검색하도록 지정

 

         검색 하고 싶은 폴더의 depth를 1로 지정하면 현재 디렉토리에서만 검색 지정 

 

 

예제) find -maxdepth 1 -type f  --> 현재 디렉토리에서만 파일 검색 

 

 

 

사용5) find 명령을 이용한 검색 결과로 다른 명령어 연결 수행 ( -exec옵션 사용 )

 

       find . -type f ! -name "문자열" -exec "명령어{}" \;

 

       => {}은 find를 이용해 찾은 목록, \;은 명령의 끝임을 나타냄

 

       => 여러 명령을 줄때는 find . -type f ! -name "문자열" -exec sh -c "명령1;명령2;명령3;명령4;" \;

 

          명령을 ;으로 구분해줌   

 

 

예제)  find . -type f ! -name "*.log" -exec "grep yes{}" \;

 

        --> .log 문자열이 들어간 검색된 파일에서 파일내에 yes문자 포함 여부를 표시해서 리스트로 보여줌

 

 

 

2. 파일에서 문자열 검색 명령어: grep 

 

 

사용1) grep [검색문자] [검색할 파일명(하위폴더에 있는 파일이면 앞에 경로를 붙여줌)]

 

예제) grep yes dispatcher.log

 

      grep yes ./temp/dispatcher.log

 

사용2) grep [옵션] [검색문자] [검색할 파일명(하위폴더에 있는 파일이면 앞에 경로를 붙여줌)]

      

  [옵션]

         -c : 검색할 문자열이 속한 행의 개수 출력

 

         -H : 파일 이름과 함께 출력

 

         -i : 대소문자 구분없이 출력

 

         -n : 찾는 문자가 속한 행의 번호와 같이 출력

 

         -r : 현재 경로부터 하위 경로까지 검색하여 출력

 

         -v : 찾으려고 하는 문자가 없는 행을 출력

 

         -w : 패턴 표현식을 하나의 단어로 취급하여 검색 

 

 

예제) grep -c yes comm.log   

      --> yes가 들어간 문구의 행의 갯수를 출력

 

      grep -c yes *comm*.log   

      --> yes가 들어간 문구를 파일명에 comm이 들어가는 log확장자를 가진 파일 중에서  행의 갯수를 출력

 

      grep -r yes temp/   

      --> 현재 폴더 및 하위 폴더인 temp폴더에서 yes 들어간 문구를 검색하여 출력

 

 

      grep -r yes .      

      --> 현재 폴더에서 yes 문자 검색 

 

 

사용3) 문자열 검색을 포함한 명령어 연결 수행 예제

 

   ps -ef|grep yes

 

   --> 전체 수행중인 프로세스 중에서 'yes'문구 들어간 문서 추출

 

728x90
반응형