리눅스(CentOS 7) 환경에서 원하는 파일을 빠르고 정확하게 찾기 위한
find명령어의 필수 옵션을 정리합니다. 대소문자 구분 없는 검색, 최근 변경된 파일 탐색, 그리고xargs를 조합한 파일 내용 검색 방법을 다룹니다.
Test Environment
- OS: CentOS 7 (3.10.0-957.el7.x86_64)
- Shell: Bash
1. 파일명으로 검색 (By Name)
가장 기본적인 사용법입니다. -name 옵션은 정확한 이름을, -iname 옵션은 대소문자를 무시하고 검색합니다.
기본 검색
# 전체 경로(/)에서 Mem.sh 파일 찾기
find /sw -name "Mem.sh"
# 현재 디렉토리(.)에서 찾기
find . -name "Mem.sh"
대소문자 무시 검색 (Insensitive)
파일명의 대소문자가 확실하지 않을 때 유용합니다.
# Mem.sh, MEM.sh 모두 검색됨
find /sw -iname "Mem.sh"
Tip (에러 숨기기):
검색 도중
예:
검색 도중
Permission denied 메시지가 너무 많이 뜬다면 명령어 뒤에 2>/dev/null을 붙여 에러 메시지를 버릴 수 있습니다.예:
find / -name "test" 2>/dev/null
2. 수정 시간으로 검색 (By Time)
장애 발생 시점이나 로그 분석 시, 특정 시간 내에 변경된 파일을 찾을 때 -mtime(Modification Time) 옵션을 사용합니다.
사용 예시
# 최근 1일(24시간) 이내에 수정된 .sh 파일 검색
find /sw -name "*.sh" -mtime -1
옵션 상세 설명
-mtime -n: 최근 n일 이내에 변경됨 (Today)-mtime +n: n일 이전에 변경됨 (Old files)-mtime n: 정확히 n일 전에 변경됨
3. 파일 내용 문자열 검색 (With Grep)
find로 찾은 파일들의 내용(Content)을 검색하고 싶을 때, 파이프(|)와 xargs를 사용하여 grep으로 넘겨줍니다.
검색 파이프라인
[파일 찾기] → [목록 전달] → [내용 검색]의 흐름입니다.
# 1일 이내 수정된 sh 파일들 중에서 "Mem"이라는 글자가 포함된 라인 출력
find /sw -name "*.sh" -mtime -1 | xargs grep "Mem"
실행 결과 해석
/sw/Mem.sh:MEMINFO=`cat /proc/meminfo...` <-- 파일명:내용
/sw/Mem1.sh: TOTAL=`free | grep ^Mem...`
/sw/Mem1.sh: USED=`free | grep ^Mem...`
grep이 find가 찾아낸 파일들을 하나씩 열어서 "Mem" 키워드가 있는지 확인하고, 해당 라인을 파일명과 함께 출력해 줍니다.
Next Step:
파일을 단순히 찾는 것을 넘어, -exec 옵션을 사용하여 검색된 파일의 권한을 일괄 변경(chmod)하거나 삭제(rm)하는 등의 고급 활용법을 익혀보세요.