파일 검색의 스위스 군용 칼
find 는 디렉터리 트리를 걸으면서 각 항목에 test 와 action 을 적용해. 문법 한 번 익히면 '어디에 있는 파일인데...' 류 질문 거의 다 답해.
모양
find <path> <tests> <action>. Path 생략 시 . (BSD 엔 명시 필요, macOS 는 사실상 둘 다 OK). Test 가 필터, default action 은 -print.
자주 쓰는 test
-name 'pattern'— basename glob 매치. 인용 필수!-iname 'pattern'— 대소문자 무시.-type f— 일반 파일.d디렉터리,lsymlink.-size +10M— 10 MB 초과.-1k,+500c(글자).-mtime -7— 최근 7 일 안.-mmin -60분 단위.-empty— 빈 파일 / 디렉터리.-maxdepth 2— 더 깊이 안 들어감. 성능 위해 다른 test 보다 먼저 두기.
action
-print— default. 경로 출력.-delete— 매치 삭제. 먼저-print로 검증!-exec cmd {} \;— 매치마다 cmd 한 번.-exec cmd {} +— 매치를 묶어서 한 번에. xargs 내장 버전.
실전 one-liner
- 홈의 모든 Python 파일:
find ~ -name '*.py' - 100MB 초과 파일:
find / -type f -size +100M 2>/dev/null - 오래된 로그 삭제:
find /var/log -name '*.log' -mtime +30 -delete - grep 으로 넘기기:
find . -name '*.go' -exec grep -l TODO {} +
인터랙티브 검색은 modern-tools 트랙의 fd 가 더 빠르고 친절해 — 하지만 find 는 모든 Unix 박스에 깔려 있어.