자유게시판

  • find 와 grep을 이용한 문자열 찾기

    페이지 정보

    profile_image
    작성자천사 조회 4,762회 작성일 2021-10-10 23:00:22 댓글 0

    본문

    출처: https://sncap.tistory.com/575

     

    하위 폴더 내 server.xml 파일에서 "Connector port" 라는 문자 열 찾기
     

    find -name server.xml | xargs grep --color "Connector port" 

     

    grep

    하위 폴더를 포함하여 존재하는 모든 파일에서 원하는 단어를 찾아주는 명령어입니다. 

     

    grep -rni [검색어] [경로명 또는 파일명]

     

    r :  하위디렉토리까지 검색

    n:  파일의 몇번째 라인에 있는지 표시

    i :  검색어를 대소 문자 구분없이 검색

     

    검색어 내에 공백 문자가 있을 경우는 ""를 사용하시면 됩니다. 

     

    예)   

            grep -rn test ./kernel/-

            grep -rni "test board" ./kernel/-

            grep -rn test *

     

    git이나 svn을 사용하시는 분들은 .git .svn 폴더로 인해 불필요하게 검색 시간이 늘어납니다.

    아래와 같이 특정 Directory를 제외할 수 있습니다.

     

             --exclude-dir=디렉토리

    예)

           grep -rn --exclude-dir=\.git test ./kernel/-

           .bashrc 파일에 아래 내용을 추가하시면 더 편하게 사용하실 수 있습니다.

            alias grp='grep -rn --exclude-dir=\.git'

            grp test ./kernel/- 과 같이 사용하실 수 있습니다.

     

    tip

            구조체의 정의(definition)부분 검색 시

            일반적으로 정의 부분은 이름뒤에 { 가 위치합니다.

            struct input_dev {

            ...

            grep -rn "input_dev\s*{" *

            grep -rn "input_dev\s\+{" *

            로 검색하시면 됩니다.

     

            \s 는 space를 의미합니다.

            * 는 개수가 0 개 이상을 의미합니다.  따라서 공백이 0개 이상 존재해야 합니다.

            \+ 1개 이상을 의미합니다. 따라서 공백이 적어도 1개는 존재해야 합니다.

     

    find

    하위 폴더에 존재하는 파일을 찾아주는 명령어입니다. 

     

    find [검색 디렉토리] -iname [파일명]

     

    -name    :  대소문자 구분하여 파일명 검색

    -iname   :  대소문자 구분하지 않고 파일명 검색

     

    예) 

            find ./kernel -iname mcs*

            find . -name mcs*

     

    Tip

        특정 확장자에서 문자열 검색

        find . -iname "*.h" | xargs grep -n "input_dev"

        find로 파일검색후  파일내에 특정 문자열 검색

    댓글목록

    등록된 댓글이 없습니다.

    Copyright © blog.batifa.com All rights reserved.