본문 바로가기
C.W.K.
Stream
Lesson 10 of 12 · published

find: 파일 시스템 검색

~15 min · find, search, exec

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

디렉터리 트리를 조건으로 검색해

find는 시작 경로 아래를 순회하면서 각 항목에 검사식과 동작을 적용해. 이름만 찾는 도구가 아니라 종류, 크기, 수정 시각과 깊이를 조합해 대상을 고를 수 있어. 결과를 바로 변경 명령으로 넘길 수도 있어서 강력하지만, 검색 범위와 조건을 먼저 출력으로 검증해야 해.

명령의 기본 모양

find <start-path> <tests> <actions> 형태로 읽으면 돼. 시작 경로를 명시하면 어느 트리를 걷는지 분명해지고, 동작을 생략하면 보통 -print가 적용돼. 셸이 *를 find보다 먼저 확장하지 않도록 이름 패턴은 따옴표로 감싸. BSD find와 GNU find는 지원 옵션과 옵션 위치가 다를 수 있으므로 현재 머신의 매뉴얼 페이지를 확인해.

자주 쓰는 검사식

  • -name '*.py'-iname '*.py': 이름을 대소문자 구분 또는 무시하고 찾아.
  • -type f, -type d, -type l: 일반 파일, 디렉터리, 심볼릭 링크를 구분해.
  • -size +100M: 기준보다 큰 항목을 찾아.
  • -mtime -7-mmin -60: 수정 시각을 일 또는 분 단위로 검사해.
  • -empty: 빈 파일이나 디렉터리를 찾아.
  • -maxdepth 2: 순회 깊이를 제한해. 구현에 따라 위치 제약이 있을 수 있어.

수정 시각, 생성 시각과 메타데이터 변경 시각은 같은 개념이 아니므로 자동 정리 기준을 정확히 선택해야 해.

출력과 실행 동작을 분리해

  • -print: 경로를 한 줄씩 보여 줘.
  • -print0: NUL로 경계를 표시해 공백과 줄바꿈이 든 파일명을 안전하게 전달해.
  • -exec cmd {} \;: 각 항목마다 명령을 실행해.
  • -exec cmd {} +: 여러 항목을 묶어 실행해 호출 수를 줄여.
  • -delete: 일치 항목을 삭제하므로 같은 조건을 -print로 먼저 검토해야 해.

검색 결과를 문자열로 다시 파싱하지 말고 파일명 경계를 보존하는 동작을 골라.

작은 표본에서 조건을 확정해

find ~ -type f -mmin -60은 최근 한 시간에 수정된 홈 파일을, find . -name '*.log' -type f -size +10M은 큰 로그 파일을 찾아. 삭제나 권한 변경이 목적이라면 처음에는 좁은 시험 디렉터리에서 경로만 출력하고, 예상한 항목 수와 대표 표본을 확인해. 그다음에만 변경 동작을 붙여. 빠른 대화형 이름 검색에는 fd가 편할 수 있지만, 기본 Unix 환경에서 복잡한 조건을 조합할 때 find의 계약을 알아두면 이식성이 좋아.

Code

홈의 큰 파일 한눈에·bash
find ~ -type f -size +100M 2>/dev/null -exec ls -lh {} +
# 크기를 계산한 뒤 정렬
find ~ -type f -size +100M 2>/dev/null -exec du -h {} + | sort -h
찾고 → 실행 (안전하게)·bash
# 1. 대상을 출력해 확인
find /var/log -name '*.gz' -mtime +30 -print
# 2. 확인한 뒤 삭제
find /var/log -name '*.gz' -mtime +30 -delete

External links

Exercise

find ~ -type f -mmin -60으로 최근 한 시간 안에 수정된 홈 파일을 찾고, 시험 프로젝트에서는 find ./project -name '*.py' -type f로 Python 파일만 골라 봐. 삭제 연습은 시험 디렉터리에서 -print로 대상을 먼저 검증한 뒤 같은 조건에 -delete를 적용해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.