본문 바로가기

리눅스

find 명령어

반응형

find 명령어

find 명령의 기본 구문

find [검색 경로] [옵션] [검색 조건]

유용한 find 명령의 옵션

  • -type: 파일 형식으로 검색합니다. 예를 들어, -type f는 일반 파일만 검색합니다.
  • -size: 파일 크기로 검색합니다. 예를 들어, -size +10M는 10MB보다 큰 파일을 검색합니다.
  • -mtime: 파일 수정 시간으로 검색합니다. 예를 들어, -mtime -7은 7일 이내에 수정된 파일을 검색합니다.
  • -exec: 검색된 파일에 대해 지정된 명령을 실행합니다. 예를 들어, -exec ls -l {} \;는 검색된 파일의 자세한 정보를 출력합니다.

생성된 지 30일 이상 된 파일만 삭제

crontab -e
0 2 * * * find /var/spool/clientmqueue -ctime +30 -exec rm -f {} \;

 

find /app/rsyslog -type f -name '*.log' -mtime +300 -ls
find /app/rsyslog -type f -name '*.log' -mtime +300 -exec rm -f {} \;

날짜 범위 기반으로 파일을 검색하고 삭제하는 작업

2021년 로그 조회(ls -l)

find /logs/ -type f -name "*.log" -newerct "2021-01-01" ! -newerct "2022-01-01" -exec ls -l {} \;

2021년 로그 삭제(rm -v)

find /logs/ -type f -name "*.log" -newerct "2021-01-01" ! -newerct "2022-01-01" -exec rm -v {} \;
728x90

파일 안에 있는 문자열 찾기

find . -name "*.txt" -type f -print | xargs grep --color=auto -i "aaaaa"
$ find . -type f -print | xargs grep --color=auto -i "aaaaa"                
./ccccc.txt:aaaaa
$ find /home/auser/ -type f -print | xargs grep --color=auto -i "aaaaa"                
/home/auser/ccccc.txt:aaaaa
$ find /home/auser/ -name ccccc.txt -type f -print | xargs grep --color=auto -i "aaaaa"
aaaaa

검색한 문자열 치환(aaaaa -> bbbbb)

find . -name "*.txt" -type f -exec sed -i 's/old/new/g' {} \;
$ cat ccccc.txt 
aaaaa

 

find . -name ccccc.txt -type f -exec sed -i 's/aaaaa/bbbbb/g' {} \;
$ cat ccccc.txt 
bbbbb

스크립트 예시

vim delete_logs.sh
#!/bin/bash

DIR="/logs"
FROM_DATE="2021-01-01"
TO_DATE="2022-01-01"

echo "삭제 대상 파일 목록:"
find "$DIR" -type f -name "*.log" -newermt "$FROM_DATE" ! -newermt "$TO_DATE" -exec ls -l {} \;

echo "삭제 진행..."
find "$DIR" -type f -name "*.log" -newermt "$FROM_DATE" ! -newermt "$TO_DATE" -exec rm -v {} \;

 

728x90
반응형