[Linux] find 명령어

bolee·2022년 10월 18일
0

find 명령어

find 명령어는 리눅스 파일 시스템에서 파일 또는 디렉토리를 검색하는 데 사용하는 명령어이다.

다양한 표현식을 사용해 원하는 파일 또는 디렉토리의 목록을 찾을 수 있다.

사용법

$> find [option] [path] [expression]

옵션(option)

아래는 많이 사용하는 옵션을 정리해두었다.

  • -P: 심볼릭 링크(symbolic link)를 따라가지 않고, 심볼릭 링크 자체 정보 사용
  • -L: 심볼릭 링크(symbolic link)에 연결된 파일 정보 사용
  • -H: 심볼릭 링크(symbolic link)를 따라가지 않지만, Command Line Argument를 처리할 때는 예외
  • -D: 디버그 메세지 출력

경로(path)

find 명령어는 경로를 인자로 받으며, 해당 경로를 기준으로 하위 디렉토리를 검색하여 해당 파일 또는 디렉토리를 찾는다.

상대 경로, 절대 경로 모두 가능하며 대부분의 리눅스의 경우 이 경로 인자 값을 생략한다면 현재 위치(.)를 입력받은 것으로 간주한다.
유닉스(Unix)의 경우 이 경로를 입력받지 않으면 명령어 실행이 안된다.

표현식(expression)

아래는 많이 사용하는 표현식을 정리해두었다.

  • -name: 지정된 문자열 패턴에 해당하는 파일 검색
  • -empty: 빈 디렉토리 또는 크기가 0인 파일 검색
  • -delete: 검색된 파일 또는 디렉토리 삭제
  • -exec: 검색된 파일에 대해 지정된 명령 실행
  • -path: 지정된 문자열 패턴에 해당하는 경로에서 검색
  • -print: 검색 결과를 출력하며, 검색 항목은 newline으로 구분 (default)
  • -print0: 검색 결과를 출력하며, 검색 항목은 null로 구분
  • -size: 파일 크키를 사용해 파일 검색
  • -type: 지정된 파일 타입에 해당하는 파일 검색
  • -mindepth: 검색을 시작할 하위 디렉토리 최소 깊이 지정
  • -maxdepth: 검색을 하위 디렉터리의 최대 깊이 지정
  • -atime: 파일 접근(access) 시각을 기준으로 파일 검색
  • -ctime: 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색
  • -mtime: 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색
  • -user: 해당 유저에 속한 파일 검색
  • -cnewer: 해당 파일보다 최근에 수정된 파일 검색

표현식을 사용할 때 연산자(Operator)를 사용해 "2개 이상의 표현식"을 조합할 수 있다.
find 명령어에서 사용할 수 있는 연산자는 아래와 같다.

표현식설명
(expression)expression 우선순위 지정
!expression
-not expression
expression 결과에 NOT 연산
expression -a expression
expression -and expression
expression expression
expression 간 AND 연산
expression -o expression
expression -or expression
expression 간 OR 연산

사용 예시

  • find: 현재 디렉토리의 파일 및 디렉토리 리스트 출력
    • find -print0: 현재 디렉토리의 모든 내용을 줄 바꿈 없이 출력
  • find [PATH]: PATH에 있는 파일 및 디렉토리 리스트 표시
  • find . -name [FILE]: 현재 디렉토리 아래 모든 파일 및 하위 디렉토리 검색
  • find / -name [FILE]: 전체 시스템(루트(root) 디렉토리)에서 파일 이름으로 검색
  • find . -name "STR*": 파일 이름이 특정 문자열로 시작하는 파일 검색
  • find . -name "*STR*": 파일 이름에 특정 문자열이 포함된 파일 검색
  • find . -name "*STR": 파일 이름이 특정 문자열로 끝나는 파일 검색
  • find . -empty: 빈 디렉토리 또는 크기가 0인 파일 검색
    • find . -name TMP -empty: TMP라는 이름의 빈 디렉토리 또는 크기가 0인 파일 검색
  • find . -name "*.EXT" -delete: 특정 확장자를 가진 모든 파일 검색 후 삭제한다. 만약, 검색 대상에 디렉토리가 포함된 경우, 디렉토리가 비어 있지 않다면 해당 디렉토리는 삭제되지 않는다.
  • find . -name [FILE] -print0: 검색된 결과를 줄 바꿈 없이 출력
    • find . -name [FILE] -print: 검색된 결과를 줄 바꿈으로 구분하여 출력
  • find . -name [FILE] -type f: -type 표현식을 사용해 파일 종류를 지정하여 검색한다. 예시는 일반 파일을 검색하는 예이다.
    • b: 블록 특수 파일(block special file) / 블록 장치 파일(block device file) -> 유닉스(Unix) 계열
    • c: 문자 특수 장치(character special file) / 문자 장치 파일(character device file) -> 유닉스(Unix) 계열
    • d: 디렉토리(directory)
    • f: 일반 파일(regular file)
    • l: 심볼릭 링크(symbolic link)
    • p: FIFO 파일
    • s: 소켓(socket)
  • find . -size +[N]c -and -size -[M]c: 파일 크기를 사용하여 파일 검색
    • 기본적으로 block 단위(512 B)의 크기를 사용한다.
    • 파일 크기 값 뒤에 c 또는 k를 붙여 바이트(bytes) 단위 또는 킬로바이트(kbytes) 단위로 값을 지정할 수 있다. (b: block, c: bytes, w: 2bytes, k: kbytes, M: mbytes, G: gbytes)
    • 파일 크기의 범위를 지정할 때 -size 표현식을 2개 조합하여 범위를 지정할 수도 있다. 이때 크기 값 앞에 +(초과) 또는 -(미만) 기호를 사용한다.
    • find . -size 1024c: 파일 크기가 1024 바이트인 파일 검색
    • find . -size +1024c: 파일 크기가 1024 바이트를 초과하는 파일 검색
    • find . -size -1024c: 파일 크기가 1024 바이트 미만인 파일 검색
    • find . -size +1024c -size -2048c: 파일 크기가 1024 바이트 초과, 2048 바이트 미만인 파일 검색
  • find . -name [FILE] -exec ls -l {} \;: 검색된 파일에 대한 상세 정보 출력 (find + ls)
    • -exec 표현식은 find 명령어로 검색된 결과를 사용해 다른 명령을 싱행할 수 있게 만들어 준다.
  • find . -name [FILE] -exec wc-l {} \;: 검색된 파일의 라인 수 출력 (find + wc)
    • -exec 표현식은 find 명령어로 검색된 결과를 사용해 다른 명령을 싱행할 수 있게 만들어 준다.
  • find . -name [FILE] -exec grep "STR" {} \;: 검색된 파일에서 문자열 찾기 (find + grep)
    • -exec 표현식은 find 명령어로 검색된 결과를 사용해 다른 명령을 싱행할 수 있게 만들어 준다.
  • find . -name [FILE] > [SAVE_FILE]: 검색 결과를 파일로 저장 (find, redirection)
  • find . -name [FILE] 2> /dev/null: 검색 중 에러 메시지 출력하지 않기 (find, redirection)
    • 표준 에러(2)를 /dev/null로 redirection 시킨다.
  • find . -maxdepth 1 -name [FILE]: 하위 디렉토리 검색하지 않기
    • -maxdepth 표현식을 사용해 검색할 하위 디렉토리의 깊이를 제한할 수 있다.
    • -maxdepth는 다른 표현식보다 앞에 사용해야 한다.
  • find . -name [FILE] -exec cp {} [PATH] \;: 검색된 파일 복사 (find + cp)
    • -exec 표현식은 find 명령어로 검색된 결과를 사용해 다른 명령을 싱행할 수 있게 만들어 준다.

참고 자료

0개의 댓글