DevOps/Linux

리눅스 find 명령어

알로그 2021. 6. 6. 12:11
반응형

리눅스 find 명령어

리눅스 find 명령어는 자주 사용하는 편인데, 생각보다 유용한 옵션이 많아서 이번 기회에 정리해본다.

 

사용방법은 다음과 같다.

  • find [옵션] [경로] [표현식]

 

아래 명령어를 실행해보자.

$ find . -print

find 명령의 특징은 별도의 옵션 없이 서브 디렉토리까지 검색한다.

 

그리고 -print 옵션은 액션이라는 개념으로 검색 결과를 표준 출력으로 출력하는 역할을 한다.

이 액션을 사용하지 않으면 암묵적으로 사용된다.

 

 

자주 사용되는 검색 옵션

  • -name pattern: 패턴과 일치하는 파일과 디렉토리 검색
  • -iname pattern: 위와 동일하지만 대소문자 구분하지 않음
  • -size n: n 크기의 파일을 검색
  • -type x: x 형식의 파일을 검색 (d=directory, f=file)
  • -empty: 빈 파일이나 디렉토리 검색

 

자주 사용되는 검색 옵션 예제

$ find . -name '*.txt.'            # .txt로 끝나는 파일과 디렉토리 검색
$ find . -name 'log*' -type f      # log로 시작되는 파일 검색
$ find . -name 'log*' -type d       # log로 시작되는 디렉토리 검색

 

 

연산자

  • -a, -and
  • -o, or
  • -!, -not
  • (): 조건과 연산자를 조합한 표현식을 하나로 묶어 처리할 때 사용

 

연산자 사용 예제

$ find . -name '*.c' -o -name '*.cpp'                  # 이렇게 검색하면 디렉토리까지 검색됨
$ find . \( -name '*.c' -o -name '*.cpp' \) -type f    # 파일만 검색

 

 

 

 

액션

find 명령의 결과를 어떻게 처리할 것인가에 대한 행위를 의미한다.

  • -print
  • -ls: 검색 결과를 'ls -dils'의 형식으로 표준 출력
  • -delete: 검색된 파일 삭제
  • -quit: 검색 조건에 해당하는 결과가 하나라도 나올 경우 검색 종료
  • -exec command: 검색 결과에 대해 지정된 명령 실행
  • -ok command: 위의 액션과 동일하고 다른 점은 검색 결과에 대해 확인
  • -prune: 특정 디렉토리에 대해 검색 제외

 

액션 사용 예제

# 현재 디렉토리에서 .git과 log 디렉토리는 제외하고 '.c'로 끝나는 일반 파일에 대한 검색 수행
$ find . -name .git -prune -o -name log -prune -o -type f -name '*.c' -print


# 중괄호는 find 명령에 의해 검색된 파일의 이름으로 치환됨, 세미콜론은 명령의 끝을 알림
# 목적 파일만 삭제하는 예제
$ find . -name '*.o' -type f -exec rm -rf \{} \;

 

 

 

옵션

  • -depth: 디렉토리 접근 시 디렉토리 안의 파일에 대하여 우선 처리. -delete 옵션에 자동 적용됨
  • -maxdepth level: 디렉토리 최대 탐색 깊이
  • -mindepth level: 디렉토리 최소 탐색 깊이
  • -mount: 다른 파일시스템에 마운트된 디렉토리 탐색은 제외

 

옵션 사용 예제

maxdepth 옵션은 겁색 옵션과 액션 전에 사용되어야 함

# 현재 디렉토리만 검색하는 예제
$ find . -maxdepth 1 -name '*.c'

 

반응형