[Linux] find 명령어 실무 패턴 3가지: 파일명, 수정 시간, 문자열 검색(grep) 활용

리눅스(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...`

grepfind가 찾아낸 파일들을 하나씩 열어서 "Mem" 키워드가 있는지 확인하고, 해당 라인을 파일명과 함께 출력해 줍니다.


Next Step:
파일을 단순히 찾는 것을 넘어, -exec 옵션을 사용하여 검색된 파일의 권한을 일괄 변경(chmod)하거나 삭제(rm)하는 등의 고급 활용법을 익혀보세요.

Comments