본문 바로가기
일반IT/리눅스

리눅스 파일 검색의 달인으로 거듭나기: find 명령어 완전 정복 🧙‍♂️

by gasbugs 2025. 10. 10.

안녕하세요! 리눅스 시스템을 사용하다 보면 수많은 디렉토리와 파일 속에서 원하는 것을 찾아야 할 때가 많습니다. "어디에 뒀더라?" 하며 ls만 반복적으로 입력하고 계신가요? 😫

 

오늘은 마치 마법처럼 원하는 파일을 콕 집어 찾아주는 강력한 도구, find 명령어에 대해 깊이 있게 알아보겠습니다. 이 글을 끝까지 읽으시면 여러분도 파일 검색의 달인이 될 수 있을 거예요! 👍

 

 

1. find 명령어의 기본 구조 뼈대 잡기

find는 단순히 이름으로만 검색하는 명령어가 아닙니다. 특정 조건에 맞는 파일을 찾아내고, 찾은 파일에 대해 특정 작업을 수행하는 것까지 가능하죠. 기본 구조는 이렇습니다.

find [검색 시작 경로] [표현식(조건)] [액션]
  • 🗺️ 검색 시작 경로: 어디서부터 찾을지 알려주는 시작점입니다. (/, . 현재 디렉토리, ~/ 홈 디렉토리 등)
  • 🔍 표현식 (Expression): 어떤 조건의 파일을 찾을지 정의하는 부분입니다. (가장 중요!)
  • ⚙️ 액션 (Action): 찾은 파일로 무엇을 할지 결정하는 부분입니다. (기본은 화면에 경로 출력)

자, 그럼 가장 강력한 기능인 '표현식'을 중심으로 find의 세계를 탐험해 볼까요?

 

2. 🕵️‍♂️ 조건별 검색 (1): 권한(Permission)으로 파일 찾기

시스템 보안이나 파일 관리를 할 때 특정 권한을 가진 파일을 찾아야 하는 경우가 정말 많습니다. 이때 -perm 옵션을 사용하면 아주 유용합니다.

숫자(Octal) 모드와 기호(Symbolic) 모드

권한을 표현하는 두 가지 방법이 있습니다.

  • 숫자 모드: 755, 644 처럼 숫자로 권한을 지정합니다.
  • 기호 모드: u+x, g-w 처럼 사용자(u), 그룹(g), 기타(o)와 권한(r,w,x)을 조합해 지정합니다.

권한 검색의 핵심: 접두사 / 와 -

-perm 옵션은 숫자나 기호 앞에 특별한 접두사를 붙여 검색 방식을 바꿀 수 있습니다.

  • find . -perm 755 👉 권한이 **정확히 755**인 파일만 찾습니다. (생각보다 잘 안 쓰여요)
  • find . -perm -644 👉 권한 비트가 최소 644 이상인 파일을 찾습니다. 즉, 소유자는 rw, 그룹은 r, 기타 사용자도 r 권한을 모두 포함하고 있는 파일을 찾습니다. (rwx-r-xr-x 즉, 755도 여기에 포함됩니다.)
  • find . -perm /u+x 👉 소유자(user)에게 실행(x) 권한이 조금이라도 포함된 모든 파일을 찾습니다. 다른 권한은 신경 쓰지 않고 오직 u+x 조건만 봅니다. 이 방식이 특정 권한을 가진 파일을 필터링할 때 가장 유용합니다! 🌟
    • 예시: /opt 디렉토리 하위에서 소유자 실행 권한이 있는 파일 검색
      find /opt -type f -perm /u+x 
      

 

보너스: 특수 권한(SUID/SGID) 파일 찾기

SUID(4000)나 SGID(2000)는 보안상 매우 중요한 권한입니다. 이 권한이 부여된 파일을 찾아서 관리하는 것은 필수적이죠.

  • 시스템 전체에서 SUID가 설정된 파일 찾기
    find / -type f -perm /4000
    

3. ⚖️ 조건별 검색 (2): 파일 크기로 찾기

로그 파일이 너무 커지거나, 불필요한 대용량 파일이 디스크를 차지할 때가 있죠. -size 옵션으로 크기별 검색이 가능합니다.

  • + (초과), - (미만) 기호와 단위를 조합해서 사용합니다.
  • 단위: c(bytes), k(Kilobytes), M(Megabytes), G(Gigabytes)
옵션 의미 예시
-size 10M 정확히 10MB인 파일 💾
-size +100M 100MB를 초과하는 파일 (대용량 파일 찾기) 🐘
-size -1k 1KB 미만인 파일 (빈 파일 또는 아주 작은 파일 찾기) 🐁
 
  • 예시: 홈 디렉토리에서 1GB가 넘는 대용량 파일 찾아보기
    find ~/ -type f -size +1G
    

4. ⚙️ 검색 후 실행: 강력한 액션 기능 활용하기

find의 진정한 힘은 검색 결과를 다른 명령어와 연동하는 '액션'에서 나옵니다.

찾아서 삭제하기: -delete

특정 조건의 파일을 찾아서 바로 삭제하고 싶을 때 사용합니다. xargs나 rm을 파이프로 연결하는 것보다 훨씬 안전하고 간단합니다.

  • 예시: .tmp 확장자를 가진 임시 파일을 모두 찾아 삭제하기
    find . -type f -name "*.tmp" -delete
    

찾아서 명령 실행하기: -exec

이것이 바로 find의 꽃입니다! 🌸 찾은 파일 하나하나에 대해 우리가 원하는 명령어를 실행하게 할 수 있습니다.

기본 형식: -exec [실행할 명령어] {} \;

  • {}: 찾은 파일 이름이 들어갈 자리(Placeholder)입니다.
  • \;: 명령어의 끝을 알리는 표시입니다. (세미콜론 앞에 역슬래시 주의!)
  • 예시 1: 용량이 10MB 이상인 모든 로그 파일의 권한을 640으로 변경하기
    find /var/log -type f -name "*.log" -size +10M -exec chmod 640 {} \;
    
  • 예시 2: 현재 디렉토리의 모든 .sh 파일에 실행 권한 추가하기
    find . -type f -name "*.sh" -exec chmod +x {} \;
    

 

마치며

오늘 우리는 find 명령어를 이용해 권한별, 크기별로 파일을 검색하고, 검색된 파일에 대해 삭제하거나 다른 명령을 실행하는 방법까지 알아보았습니다. find는 옵션이 정말 다양해서 처음에는 복잡해 보일 수 있지만, 오늘 배운 -perm, -size, -exec, -delete만 잘 활용해도 리눅스 파일 관리 능력이 몇 단계는 업그레이드될 것입니다.

이제 더 이상 파일 찾느라 시간 낭비하지 마세요! find 명령어로 똑똑하게 작업하는 리눅스 전문가로 거듭나시길 바랍니다. 🚀


태그:

리눅스, find, 명령어, 파일검색, 권한, chmod, exec, delete, SUID, 시스템관리, CLI