[리눅스 명령어] find 정리

2024. 9. 12. 08:00·프로그래밍/Linux
반응형

 

안녕하세요 펭귄 교수입니다.

이번에는 리눅스 명령어 중 find 명령어에 관해 이야기를 해보고자 합니다.


 

리눅스 find 명령어는 파일 시스템에서 파일이나 디렉토리를 검색하는 매우 강력한 도구입니다.

다양한 옵션을 통해 특정 조건에 맞는 파일을 찾을 수 있으며, 크기, 이름, 수정 시간 등 다양한 필터를 지원합니다.

이번 포스팅에서는 find 명령어의 기본 사용법과 주요 옵션들, 그리고 이를 활용한 예제를 소개하겠습니다.

1. find 기본 사용법

find 명령어는 다음과 같은 기본 구문을 따릅니다.

find [검색할 디렉토리] [검색 조건] [실행할 동작]
 

find는 지정된 디렉토리에서 조건에 맞는 파일이나 디렉토리를 찾고, 필요한 경우 해당 파일에 대해 명령을 실행할 수 있습니다.


2. find 명령어의 주요 옵션

2.1 -name: 파일 이름으로 검색

특정 이름의 파일을 찾고 싶을 때 사용합니다. 파일 이름은 대소문자를 구분합니다.

find /path/to/directory -name "filename"
 

위 명령어는 /path/to/directory 디렉토리에서 'filename'이라는 파일을 검색합니다.

2.1.1 -iname: 대소문자 구분하지 않고 검색

대소문자를 구분하지 않고 검색하려면 -iname 옵션을 사용합니다.

find /path/to/directory -iname "filename"
 

2.2 -type: 파일 유형으로 검색

파일, 디렉토리, 심볼릭 링크 등 파일 유형에 따라 검색할 수 있습니다.

  • f: 일반 파일
  • d: 디렉토리
  • l: 심볼릭 링크
find /path/to/directory -type f
 

위 명령어는 /path/to/directory에서 모든 일반 파일을 검색합니다.

2.3 -size: 파일 크기로 검색

파일 크기를 기준으로 검색할 때 사용합니다. c는 바이트 단위, k는 킬로바이트 단위를 나타냅니다.

find /path/to/directory -size +100M
 

위 명령어는 100MB보다 큰 파일을 검색합니다. +는 초과, -는 미만, 숫자만 입력하면 정확한 크기의 파일을 검색합니다.

2.4 -mtime: 수정 시간으로 검색

파일의 마지막 수정 시간을 기준으로 검색할 수 있습니다. -mtime 옵션은 일(day) 단위로 검색하며, +는 그보다 오래된 파일, -는 그보다 최근의 파일을 의미합니다.

find /path/to/directory -mtime -7
 

위 명령어는 최근 7일 이내에 수정된 파일을 검색합니다.

2.5 -atime: 마지막 접근 시간으로 검색

마지막으로 파일에 접근한 시간을 기준으로 파일을 검색합니다.

find /path/to/directory -atime +30
 

이 명령어는 30일 이상 접근되지 않은 파일을 검색합니다.

2.6 -exec: 파일을 찾은 후 명령어 실행

find 명령어는 검색된 파일에 대해 특정 명령어를 실행할 수 있습니다. 이때 -exec 옵션을 사용합니다.

{}는 검색된 파일을 나타내며, \;는 명령어의 끝을 의미합니다.

find /path/to/directory -name "*.log" -exec rm {} \;
 

위 명령어는 .log 파일을 검색한 후, 해당 파일을 삭제합니다.

2.7 -delete: 파일 삭제

파일을 찾은 후 바로 삭제할 때 사용합니다. 단, 이 옵션은 매우 강력하므로 사용할 때 주의해야 합니다.

find /path/to/directory -name "*.tmp" -delete
 

이 명령어는 .tmp 파일을 검색한 후 삭제합니다.

2.8 -maxdepth & -mindepth: 검색 깊이 제한

검색할 디렉토리의 깊이를 제한할 때 사용합니다.

  • -maxdepth: 지정한 깊이까지 검색
  • -mindepth: 지정한 깊이부터 검색
find /path/to/directory -maxdepth 2 -name "*.txt"
 

위 명령어는 /path/to/directory에서 최대 2단계 깊이까지 .txt 파일을 검색합니다.


3. find 명령어 예제

3.1 특정 확장자를 가진 파일 검색

특정 디렉토리에서 .txt 확장자를 가진 파일을 검색하려면 다음과 같이 입력할 수 있습니다.

find /home/user -name "*.txt"
 

이 명령어는 /home/user 디렉토리에서 .txt 확장자를 가진 모든 파일을 검색합니다.

3.2 100MB보다 큰 파일 삭제

시스템에서 100MB보다 큰 파일을 삭제하고 싶을 때는 아래 명령어를 사용할 수 있습니다.

find /var/log -type f -size +100M -exec rm {} \;

 

이 명령어는 /var/log 디렉토리에서 100MB보다 큰 모든 파일을 검색한 후 삭제합니다.

3.3 30일 이상 수정되지 않은 파일 압축

30일 이상 수정되지 않은 파일을 찾고, 이를 gzip으로 압축하려면 다음과 같이 입력할 수 있습니다.

find /home/user -type f -mtime +30 -exec gzip {} \;
 

이 명령어는 /home/user에서 30일 이상 수정되지 않은 파일을 찾아 압축합니다.

3.4 심볼릭 링크 파일 검색

디렉토리 내에서 심볼릭 링크 파일을 검색하려면 -type l 옵션을 사용할 수 있습니다.

find /path/to/directory -type l
 

이 명령어는 /path/to/directory에서 모든 심볼릭 링크 파일을 검색합니다.

3.5 특정 사용자 소유의 파일 검색

특정 사용자가 소유한 파일을 찾으려면 -user 옵션을 사용할 수 있습니다.

find /home/user -user username

 

이 명령어는 /home/user 디렉토리에서 username 사용자가 소유한 파일을 검색합니다.

3.6 빈 파일 검색

파일 크기가 0인 빈 파일을 찾고 싶을 때는 -empty 옵션을 사용할 수 있습니다.

find /path/to/directory -type f -empty
 

이 명령어는 /path/to/directory에서 빈 파일을 검색합니다.

3.7 최신 수정 파일 상위 5개 출력

마지막으로 수정된 파일 상위 5개를 찾고 싶다면 -exec와 함께 ls 명령어를 사용할 수 있습니다.

find /path/to/directory -type f -exec ls -lt {} + | head -n 5
 

이 명령어는 /path/to/directory에서 파일을 찾아 수정 시간이 최신인 상위 5개 파일을 출력합니다.


4. 결론

find 명령어는 리눅스에서 파일과 디렉토리를 검색하는 데 필수적인 도구입니다. 다양한 조건을 조합하여 원하는 파일을 효율적으로 찾을 수 있으며, 다른 명령어와 함께 사용하면 더욱 강력한 기능을 제공합니다.

 

이전 포스팅인 'grep' 명령어와는 비슷한 기능을 하고 있지만, 다른 작업과 다른 수행 능력을 갖고 있으므로,

둘의 차이점을 파악하고, 어떤 상황에 어떤 명령어가 필요할 지 판단하는 능력 또한 필요해 보입니다.

 

이번 포스팅에서 소개한 옵션들과 예제를 참고하여, 파일 검색 작업을 쉽게 처리해 보세요.

반응형

'프로그래밍 > Linux' 카테고리의 다른 글

[Ubuntu] 우분투 초기 설정 시 해 놓으면 좋은 것들!  (0) 2024.11.02
[리눅스 명령어] 파일 압축 및 백업의 필수 도구 tar 총정리!  (0) 2024.09.18
[리눅스 커맨드] grep 정리  (0) 2024.09.11
'프로그래밍/Linux' 카테고리의 다른 글
  • [Ubuntu] 우분투 초기 설정 시 해 놓으면 좋은 것들!
  • [리눅스 명령어] 파일 압축 및 백업의 필수 도구 tar 총정리!
  • [리눅스 커맨드] grep 정리
Dev.Poinguinie
Dev.Poinguinie
게임, 코딩 블로그 입니다. 여러 일상적인 글도 올려요! 많이 봐주세요! 감사합니다.
  • Dev.Poinguinie
    펭귄교수
    Dev.Poinguinie
    • 분류 전체보기
      • 새티스팩토리
        • 정보
        • 모드
        • 리뷰
      • 펠월드
        • 정보
        • 패치노트
      • 게임
        • 스팀 세일
        • 테라리아
        • 디펜서바이버
      • App
        • Kotlin
        • Flutter
      • Front End
        • HTML
        • JavaScript
        • React
      • Back End
        • Node.js
      • Docker
        • Docker 강의
        • Docker Project
      • 프로그래밍
        • AI
        • Chrome Extension
        • Markdown
        • Python
        • C++
        • Linux
        • Error
        • Tool
      • Computer Science
        • Algorithm
        • Network
      • 게임 프로그래밍
        • 유니티
      • 제작
        • 웹사이트
        • 기타 프로그램
      • 일상
        • 자작시
        • 노래 추천 및 정보
        • 블로그 운영
        • 내일의 모든 것
        • 오블완 챌린지
      • 리뷰
        • 식당 리뷰
        • IT 리뷰
  • 최근 글

  • 링크

    • 새티스 팩토리 모드
    • 깃허브 블로그
    • 깃허브 프로필
  • 공지사항

    • 티스토리 스킨 변경
    • 파이썬 코딩 강의 공지사항
  • hELLO· Designed By정상우.v4.10.3
Dev.Poinguinie
[리눅스 명령어] find 정리
상단으로

티스토리툴바