리눅스를 오래 쓰다 보면 결국 자주 찾게 되는 명령어가 몇 개 있다. 그중 하나가 바로 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
안전한 습관
- 먼저 -delete 없이 결과만 확인
- 필요하면 -ls 나 -exec ls -lh {} \; 로 재검토
- 확신이 들 때만 삭제 실행
운영 서버에서는 이 순서를 지키는 편이 훨씬 안전하다.
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 명령부터
손에 익혀두는 걸 추천한다.