find — 리눅스 기본 명령어
Linux / 리눅스 기본 명령어 / find.html
디렉토리 트리를 탐색해 조건에 맞는 파일을 검색하는 강력한 명령어.
기본 정보
| 명령어 이름 | find |
|---|---|
| 한 줄 소개 | 디렉토리 트리를 탐색해 조건에 맞는 파일을 검색하는 강력한 명령어. |
| 제공 | findutils (모든 Linux 배포판 기본 탑재) |
| 공식 문서 | https://man7.org/linux/man-pages/man1/find.1.html |
| 지원 운영체제 | Linux, macOS, BSD, WSL |
| 설치 여부 | 기본 탑재 (별도 설치 불필요) |
| 분류 | 리눅스 기본 명령어 (태그: 파일 검색, 탐색, 리눅스, 기본) |
이 명령어는 무엇인가?
find는 지정한 디렉토리 아래에서 조건에 맞는 파일을 재귀적으로 검색하는 명령어입니다. 이름, 크기, 수정 시각, 권한, 소유자 등 다양한 조건으로 검색할 수 있습니다.
단순 검색부터 복잡한 조건 조합, 검색 결과에 명령어 실행까지 처리할 수 있어 리눅스 관리의 핵심 도구입니다.
어떤 문제를 해결하는가?
- 특정 이름의 파일을 찾습니다.
- 오래된 파일을 찾아 정리합니다.
- 특정 크기 이상의 파일을 찾습니다.
- 권한이 잘못된 파일을 찾아 수정합니다.
주요 기능
이름 기반 검색 (-name)
파일 이름에 와일드카드를 사용해 검색합니다.
- 활용 상황: 특정 이름 패턴의 파일을 찾을 때.
- 얻는 결과: 조건에 맞는 파일 경로가 표시됩니다.
- 제한 사항: 대소문자를 구분할 수 있으므로 -iname 사용을 권장합니다.
크기·시각 조건
파일 크기(-size)나 수정 시각(-mtime)으로 검색합니다.
- 활용 상황: 오래되거나 큰 파일을 찾아 정리할 때.
- 얻는 결과: 조건에 맞는 파일만 골라집니다.
- 제한 사항: 시간 단위가 정확하지 않을 수 있습니다 (일 단위).
복합 조건 (-and, -or)
여러 조건을 조합해 정밀하게 검색합니다.
- 활용 상황: 복잡한 검색 조건이 필요할 때.
- 얻는 결과: 정확한 파일만 검색됩니다.
- 제한 사항: 명령어가 길어져 이해가 어려울 수 있습니다.
검색 결과에 명령 실행 (-exec)
검색된 파일에 각각 명령어를 실행합니다.
- 활용 상황: 검색된 파일 일괄 삭제·권한 변경 등에 사용.
- 얻는 결과: 수작업 없이 일괄 처리가 가능합니다.
- 제한 사항: 실수 시 대량 삭제 위험이 있어 주의가 필요합니다.
설치 및 실행
기본 탑재 확인
모든 Linux 배포판에 기본 포함되어 있습니다.
which find
find --version
설치 (경량 환경)
일반적으로 이미 설치되어 있습니다.
sudo apt install findutils # Debian/Ubuntu
sudo dnf install findutils # Fedora
실제 사용 예제
이름으로 검색
특정 이름의 파일을 찾습니다.
# 현재 디렉토리에서 파일 검색
find . -name "*.conf"
# 특정 디렉토리에서 검색
find /etc -name "nginx*.conf"
# 대소문자 무시 검색
find . -iname "readme*"
# 파일만 (디렉토리 제외)
find . -name "*.log" -type f
크기·시각으로 검색
오래되거나 큰 파일을 찾습니다.
# 30일 이상 된 파일
find . -mtime +30
# 10MB 이상 파일
find . -size +10M
# 최근 24시간 내 수정된 파일
find . -mtime -1
# 비어 있는 파일
find . -empty -type f
검색 결과에 명령 실행
검색된 파일에 명령을 일괄 실행합니다.
# 검색된 파일 삭제
touch test1.log test2.log
find . -name "*.log" -delete
# 권한 일괄 변경
find . -name "*.sh" -exec chmod +x {} \;
# 검색 결과를 파일로 저장
find /var/log -name "*.log" > log-files.txt