find (Search for Files)
find는 리눅스 파일 시스템에서 특정 조건(이름, 크기, 시간, 권한 등)에 맞는 파일이나 디렉터리를 찾아내는 가장 강력한 도구입니다. 단순히 찾는 것에 그치지 않고, 찾은 결과에 대해 특정 명령을 실행(-exec)할 수도 있습니다.
[Image of Linux directory tree being scanned by find command]
1. 기본 사용법
find [경로] [조건] [액션]
- 경로를 지정하지 않으면 현재 디렉터리(
.)를 기준으로 검색합니다.
2. 주요 검색 조건 (Options)
| 조건 | 설명 |
|---|---|
-name |
파일 이름으로 검색 (대소문자 구분) |
-iname |
파일 이름으로 검색 (대소문자 무시) |
-type |
파일 타입으로 검색 (f: 일반 파일, d: 디렉터리) |
-size |
파일 크기로 검색 (+10M: 10MB 이상, -1k: 1KB 이하) |
-mtime |
수정 시간으로 검색 (-7: 최근 7일 이내 수정됨) |
-user |
특정 소유자의 파일 검색 |
3. 실무 활용 예시
① 이름으로 파일 찾기 (현재 폴더 및 하위 폴더 전체)
find . -name "config.yaml"
② 특정 확장자 파일만 찾아서 개수 세기
find . -type f -name "*.log" | wc -l
③ 100MB가 넘는 대용량 파일 찾기
find /var/log -type f -size +100M
④ 찾은 파일 모두 삭제하기 (주의!)
최근 30일이 지난 로그 파일을 찾아 자동으로 삭제할 때 자주 씁니다.
find /tmp -name "*.tmp" -mtime +30 -exec rm {} \;
4. [팁] find vs locate
- find: 실제 디스크를 실시간으로 뒤지기 때문에 정확하지만 속도가 상대적으로 느릴 수 있습니다.
- locate: 미리 생성된 데이터베이스(db)에서 찾기 때문에 매우 빠르지만, 방금 만든 파일은 검색되지 않을 수 있습니다 (
updatedb필요).