개요
리눅스 환경에서 원하는 파일을 빠르게 찾고 처리하는 것은 서버 관리와 개발의 기본이자 필수 역량입니다. 본 글에서는 find 명령어의 기본 검색 옵션부터 파일 크기·수정 시간 기반 검색, 검색 결과에 대한 일괄 작업(-exec)까지 실습을 통해 단계별로 알아봅니다.
실습 환경 구성 및 파일명 기반 기본 검색
find 명령어 실습을 위한 전용 디렉터리를 생성하고 해당 위치로 이동하기 위해 mkdir -p ~/find_lab/docs ~/find_lab/logs ~/find_lab/backup && cd ~/find_lab 명령어를 실행합니다.

검색 테스트에 사용할 다양한 확장자의 샘플 파일들을 생성하기 위해 touch docs/app.log docs/guide.txt logs/error.log logs/access.log backup/data.bak 명령어를 실행합니다.

find 명령어는 지정한 디렉터리 경로 하위의 모든 파일과 디렉터리를 조건에 따라 재귀적으로 검색합니다.find . -name "*.log" 명령어를 실행하면 현재 디렉터리(.)를 기준으로 확장자가 .log로 끝나는 모든 파일을 찾아 경로와 함께 출력합니다.
이때 와일드카드 문자(*)가 셸에서 먼저 확장되는 것을 방지하기 위해 검색 패턴은 큰따옴표로 감싸서 지정합니다.
⚙️ [주요 옵션]
-name : 대소문자를 구분하여 지정한 파일 이름 또는 패턴과 일치하는 항목을 검색합니다.-iname : 대소문자를 구분하지 않고 파일 이름 또는 패턴과 일치하는 항목을 검색합니다.-type : 검색할 파일 유형(f는 일반 파일, d는 디렉터리)을 지정합니다.-size : 파일 크기를 기준으로 검색합니다(+는 초과, -는 미만).-mtime : 파일 내용이 수정된 기준 시간(일 단위)을 조건으로 검색합니다.-empty : 내용이 비어 있는 빈 파일이나 빈 디렉터리를 검색합니다.-exec : 검색된 각 파일에 대해 지정한 리눅스 명령어를 일괄 실행합니다.-delete : 검색 조건에 일치하는 파일들을 즉시 삭제합니다.

대소문자를 구분하지 않고 파일명을 검색하기 위해 -iname 옵션을 사용하여 find . -iname "GUIDE.TXT" 명령어를 실행합니다.
실제 파일명이 소문자인 guide.txt여도 대문자 검색 조건과 일치하여 파일 경로가 정상적으로 검색됩니다.

파일 타입과 크기 조건으로 대용량 파일 탐색하기
파일 크기 조건 검색을 테스트하기 위해 15MB 크기의 대용량 샘플 파일을 생성하는 truncate -s 15M ~/find_lab/backup/large_archive.iso 명령어를 실행합니다.

추가적인 크기 비교 실습을 위해 2MB 용량의 로그 샘플 파일을 생성하는 truncate -s 2M ~/find_lab/logs/big_trace.log 명령어를 실행합니다.

일반 파일은 제외하고 디렉터리 경로만 필터링하여 검색하기 위해 -type d 옵션을 적용한 find ~/find_lab -type d 명령어를 실행합니다.
지정한 경로 하위에 존재하는 모든 디렉터리 목록만 깔끔하게 출력됩니다.

일반 파일(-type f) 중 10MB를 초과하는 대용량 파일(-size +10M)을 찾고 상세 정보를 함께 확인하기 위해 find ~/find_lab -type f -size +10M -exec ls -lh {} + 명령어를 실행합니다.
조건에 일치하는 15MB 크기의 large_archive.iso 파일이 검색되어 상세 권한 및 용량 정보와 함께 출력됩니다.

시간 조건(mtime/mmin) 기반 변경 파일 찾기
시간 경과에 따른 파일 검색 실습을 위해 이틀 전 수정된 과거 샘플 파일을 생성하는 touch -d "2 days ago" ~/find_lab/backup/old_backup.tar 명령어를 실행합니다.

최근 변경된 최신 파일 검색 테스트를 위해 현재 시점의 타임스탬프를 가진 샘플 파일을 생성하는 touch ~/find_lab/logs/recent.log 명령어를 실행합니다.

최근 24시간 이내에 수정된 일반 파일을 검색하기 위해 -mtime -1 옵션을 적용한 find ~/find_lab -type f -mtime -1 명령어를 실행합니다.
기준 시간(24시간) 이내에 생성되거나 변경된 모든 파일 목록이 정상적으로 출력됩니다.

수정된 지 24시간(1일)이 초과된 오래된 파일을 검색하기 위해 -mtime +1 옵션을 적용한 find ~/find_lab -type f -mtime +1 명령어를 실행합니다.
이틀 전 날짜로 생성해 두었던 old_backup.tar 파일만 정확하게 필터링되어 출력됩니다.

검색 결과 일괄 제어: -exec 옵션과 삭제 처리
일괄 제어 및 권한 변경 실습을 진행하기 위해 임시 디렉터리를 만들고 샘플 임시 파일들을 생성하는 mkdir -p ~/find_lab/temp && touch ~/find_lab/temp/cache1.tmp ~/find_lab/temp/cache2.tmp 명령어를 실행합니다.

검색된 모든 .tmp 확장자 파일의 접근 권한을 644로 일괄 변경하기 위해 -exec 옵션을 적용한 find ~/find_lab/temp -name "*.tmp" -exec chmod 644 {} \; 명령어를 실행합니다.{} 기호는 검색된 개별 파일의 경로로 치환되며, \;는 -exec 구문으로 전달되는 명령어의 끝을 지정합니다.

권한 변경 작업이 정상적으로 반영되었는지 확인하기 위해 ls -l ~/find_lab/temp 명령어를 실행합니다.
출력 결과 두 개의 임시 파일 모두 읽기 및 쓰기 권한(-rw-r--r--, 644)으로 수정된 것을 확인할 수 있습니다.

검색 조건에 일치하는 .tmp 파일들을 일괄 삭제하기 위해 rm -f 명령어를 연계한 find ~/find_lab/temp -name "*.tmp" -exec rm -f {} \; 명령어를 실행합니다.
별도의 추가 확인 과정 없이 검색된 대상 파일들이 한 번에 제거됩니다.

임시 파일들이 모두 정상적으로 삭제되었는지 최종 확인하기 위해 ls -la ~/find_lab/temp 명령어를 실행합니다.
현재 디렉터리(.)와 상위 디렉터리(..)만 남아 있고 생성했던 임시 파일들이 모두 깔끔하게 삭제된 상태를 보여줍니다.

지금까지 리눅스 find 명령어의 핵심 검색 옵션부터 실무에서 바로 활용할 수 있는 일괄 처리 기법까지 간단하게 정리해보았습니다.
알려드린 옵션들을 상황에 맞게 조합해 보면서 파일 탐색과 관리 작업을 한층 더 효율적으로 진행해 보시기 바랍니다.