[Linux] 파일찾기(find) 명령어 사용법

    Find 명령어
    리눅스에서 파일을 찾기 위해서는 find 명령어를 사용합니다. find 명령어의 다양한 옵션으로 파일을 찾을 수도 있고, 다른 옵션등을 조합하여 내용을 검색할 수도 있습니다.

    find [경로] [옵션] [대상]

    [Linux] 파일찾기(find) 명령어 사용법


    # find --help
    Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
    
    default path is the current directory; default expression is -print
    expression may consist of: operators, options, tests, and actions:
    
    operators (decreasing precedence; -and is implicit where no others are given):
          ( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
          EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2
    
    positional options (always true): -daystart -follow -regextype
    
    normal options (always true, specified before other expressions):
          -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
          --version -xautofs -xdev -ignore_readdir_race -noignore_readdir_race
    
    tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
          -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
          -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
          -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
          -nouser -nogroup -path PATTERN -perm [-/]MODE -regex PATTERN
          -readable -writable -executable
          -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
          -used N -user NAME -xtype [bcdpfls]
          -context CONTEXT
    
    
    actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print 
          -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
          -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
          -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

     

    Find 주요 옵션 [1]

    옵션 설명
    name [파일명] 지정된 이름의 파일을 찾는다.
    user [유저명] user 소유의 파일을 찾는다.
    type [bcdfls] 지정된 형식의 파일을 찾는다.
    b : 블록파일
    c : 문자
    d : 디렉터리
    f : 파일
    l : 링크파일
    s : 소켓
    size [+/-]숫자[bckw] 지정된 크기의 파일을 찾는다.
    +n : n보다 크다
    -n : n보다 작다
    n : n이다
    b : 512-byte
    c : byte
    k : kilobytes
    w : 2-byte
    mtime [+/-]숫자 -
    +n : n일 전에 수정된 파일을 찾는다.
    -n : n일 동안 수정된 파일을 찾는다.
    atime [+/-]숫자 엑세스 시간을 기준으로 찾는다.
    print  표준출력으로 검색된 파일명을 출력한다.
    exec {} 찾은 파일에게 특정 명령어를 실행한다 (ex: 복사, 삭제 등)

     

     

    Find 예제

    find 명령어로 폴더를 지정 할 때 . 을 입력하면 현재 폴더 및 하위(서브) 폴더를 기반으로 탐색하며, /를 입력하면 전체 폴더를 지정한다.

     

    파일명으로 찾기 (-name)

    # 현재 및 서브 폴더를 검색하여 test가 들어간 파일을 찾는다
    find . -type f -name "*test*"
    
    # 모든 폴더를 검색하여 test가 들어간 파일을 찾는다
    find / -type f -name "*test*"

     

    생성시간으로 찾기 (-mtime)

    # 최근 365일안에 변경된 파일을 찾는다
    find / -mtime -365

     

    문자열 찾기 (xargs grep)

    # 현재 폴더 및 서브 폴더에 있는 log 파일 중, python이 들어간 문자열을 찾으시오
    find . -type f -name '*.log' | xargs grep 'python'

     

    찾은 파일 액션 (exec)

    # tensor 문자열이 들어간, log 파일을 현재 및 하위 디렉토리에서 찾고 있을 경우 log폴더에 복사한다
    sudo find . -type f -name '*.log' -exec cp {} /log \; | xargs grep 'tensor'

     

    참고자료

    [1] https://itwiki.kr/w/%EB%A6%AC%EB%88%85%EC%8A%A4_find

     

    반응형

    댓글

    Designed by JB FACTORY