리눅스를 오래 쓰다 보면 결국 자주 찾게 되는 명령어가 몇 개 있다. 그중 하나가 바로 find 이다. 

파일이 어디 있는지 찾는 기본 도구로만 알고 있으면 아깝다. 실제로는 로그 정리, 권한 점검, 

오래된 파일 찾기, 배포 전 점검, 디스크 정리까지 꽤 넓게 쓸 수 있다.

이번 글에서는 초급을 막 벗어난 사용자부터 서버 운영자까지 바로 써먹기 좋은 find 실무 팁 7가지를 정리한다.

왜 find를 잘 써야 할까

GUI 환경에서는 검색창으로 파일을 찾을 수 있지만, 서버나 원격 환경에서는 

결국 셸에서 해결해야 할 때가 많다. 특히 다음 상황에서 find 는 정말 강하다.

  • 특정 확장자 파일만 한꺼번에 찾고 싶을 때
  • 오래된 로그나 백업 파일을 정리하고 싶을 때
  • 권한이 너무 넓게 열린 파일을 점검하고 싶을 때
  • 배포 전에 설정 파일 위치를 빠르게 확인하고 싶을 때
  • 대용량 디렉토리에서 불필요한 파일을 골라내고 싶을 때

중요한 건 무조건 복잡하게 쓰는 게 아니라, 안전하게 범위를 좁혀가며 찾는 습관이다.

1. 이름으로 찾을 때는 대소문자 구분 여부를 먼저 생각하자

가장 기본은 이름 검색이다.

find /etc -name "nginx.conf"

이 명령은 정확히 nginx.conf 라는 이름만 찾는다. 하지만 운영 환경에서는 대소문자가 섞인

파일명도 종종 있어서, 확신이 없으면 -iname 이 더 편하다.

find /var/www -iname "*.log"

이렇게 하면 .LOG, .Log 같은 이름도 함께 잡힌다.

  • 파일명이 정확하면 -name
  • 대소문자까지 애매하면 -iname
  • 확장자 검색은 "*.확장자" 형태로 따옴표를 붙이기

쉘이 먼저 * 를 해석해버리지 않도록 따옴표를 붙이는 습관이 안전하다.

2. 파일만 찾을지, 디렉토리만 찾을지 구분하면 결과가 훨씬 깔끔하다

find 는 기본적으로 파일과 디렉토리를 모두 찾는다. 그래서 결과가 지저분하면 -type 옵션부터 붙이는 편이 좋다.

# 파일만 찾기 find /etc -type f -name "*.conf" # 디렉토리만 찾기 find /var -type d -name "log"

실무에서는 이 차이가 꽤 크다. 예를 들어 설정 파일을 찾고 싶은데 디렉토리까지 함께 나오면 오히려 헷갈린다.

자주 쓰는 타입은 아래 정도만 알아도 충분하다.

  • -type f : 일반 파일
  • -type d : 디렉토리
  • -type l : 심볼릭 링크

3. 수정 시각 기준으로 오래된 파일을 찾으면 로그 정리에 유용하다

서버 운영에서 가장 자주 쓰는 패턴 중 하나가 오래된 파일 찾기다.

find /var/log -type f -mtime +30

이 명령은 30일보다 오래전에 수정된 파일을 찾는다.

자주 쓰는 예시는 이런 식이다.

# 7일 이상 지난 백업 파일 찾기

find /backup -type f -name "*.tar.gz" -mtime +7

# 최근 1일 안에 바뀐 파일 찾기 find /etc -type f -mtime -1

기억해둘 포인트

  • -mtime +30 : 30일 초과
  • -mtime -1 : 최근 1일 이내
  • -mmin -60 : 최근 60분 이내

로그, 캐시, 임시 파일 점검할 때 매우 자주 쓰인다.

4. 용량 조건을 함께 걸면 디스크 정리 후보를 빠르게 찾을 수 있다

디스크가 갑자기 찼을 때 무작정 du 만 보는 것보다, find 로 큰 파일 후보를 먼저 거르는 방식이 빠를 때가 많다.

find /var -type f -size +100M

이 명령은 100MB보다 큰 파일을 찾는다.

예를 들면:

find /home -type f -size +500M find /tmp -type f -size +50M

정리 전에 바로 삭제하지 말고, 먼저 어떤 파일인지 확인하는 흐름이 좋다.

find /var -type f -size +100M -ls

-ls 를 붙이면 권한, 소유자, 크기까지 한 번에 확인하기 편하다.

5. 권한 점검에도 find가 꽤 강력하다

리눅스 보안에서 과하게 열린 권한은 흔한 문제다. find 를 쓰면 위험 후보를 빠르게 찾을 수 있다.

# 모든 사용자에게 쓰기 가능한 파일 찾기

find /srv -type f -perm -002

# 777 권한 파일 찾기

find /var/www -type f -perm 777

실무적으로는 아래처럼 점검하는 경우가 많다.

# SUID 파일 찾기

find / -type f -perm -4000 2>/dev/null

# world-writable 디렉토리 찾기 find / -type d -perm -0002 2>/dev/null

이런 명령은 보안 점검이나 서버 인수인계 때 꽤 유용하다. 

다만 / 전체를 뒤질 때는 권한 오류가 많이 나므로 2>/dev/null 을 함께 붙여 출력 소음을 줄이는 편이 좋다.

6. 찾기만 하지 말고 exec로 후속 작업을 붙일 수 있다

find 의 진짜 강점은 찾은 결과에 대해 바로 작업을 이어갈 수 있다는 점이다.

예를 들어 특정 로그 파일을 찾아 크기와 경로를 확인하려면:

find /var/log -type f -name "*.log" -exec ls -lh {} \;

파일 내용을 빠르게 검사할 수도 있다.

find /etc -type f -name "*.conf" -exec grep -H "listen" {} \;

이 패턴은 매우 강력하지만, 삭제 명령과 결합할 때는 특히 조심해야 한다.

# 주의해서 사용할 것 find /tmp -type f -mtime +7 -delete

안전한 습관

  1. 먼저 -delete 없이 결과만 확인
  2. 필요하면 -ls 나 -exec ls -lh {} \; 로 재검토
  3. 확신이 들 때만 삭제 실행

운영 서버에서는 이 순서를 지키는 편이 훨씬 안전하다.

7. 탐색 범위를 제한하면 속도와 안전성이 좋아진다

find / 처럼 루트 전체를 탐색하면 느릴 뿐 아니라 불필요한 결과도 너무 많이 나온다. 가능하면 범위를 좁히는 게 좋다.

find /etc/nginx -type f

find /var/log/nginx -type f -name "*.log"

find /home/deploy/project -type f -name “*.env”

디렉토리 깊이를 제한하는 것도 유용하다.

find /etc -maxdepth 2 -type f -name "*.conf"

이렇게 하면 너무 깊은 하위 디렉토리까지 내려가지 않아서 결과를 훨씬 읽기 쉽게 만들 수 있다.

반대로 특정 디렉토리는 아예 제외할 수도 있다.

find / -path /proc -prune -o -type f -name "*.log" -print 2>/dev/null

/proc, /sys, /dev 같은 특수 경로는 필요 없으면 제외하는 편이 낫다.

실무에서 바로 써먹기 좋은 예시 모음

아래 예시 몇 개만 기억해도 일상 작업 속도가 꽤 빨라진다.

# 최근 3일 안에 바뀐 설정 파일 찾기

find /etc -type f -name "*.conf" -mtime -3

# 30일 이상 된 압축 로그 찾기

find /var/log -type f -name "*.gz" -mtime +30

# 200MB 이상 파일 찾기

find / -type f -size +200M 2>/dev/null

# 특정 문자열이 들어간 설정 파일 찾기

find /etc -type f -name "*.conf" -exec grep -H "server_name" {} \;

# 심볼릭 링크 찾기

find /var/www -type l

마무리

find 는 처음에는 옵션이 많아서 어렵게 느껴질 수 있지만, 자주 쓰는 패턴은

생각보다 단순하다. 이름, 타입, 수정 시각, 크기, 권한, 후속 작업 정도만 익혀도

리눅스 운영 효율이 확실히 좋아진다.

특히 중요한 건 찾은 뒤 바로 삭제하지 않는 습관

그리고 범위를 좁혀서 안전하게 확인하는 흐름이다. 

리눅스에서 파일과 로그를 다루는 시간이 많다면, 이번 주에는 find 명령부터

손에 익혀두는 걸 추천한다.