리눅스 날짜 기준으로 파일 삭제하기

리눅스 파일 생성일 기준으로 삭제
리눅스 날짜 기준으로 파일 삭제

1 방법 1: 며칠 전[ | ]

  • find 명령어에 -mtime +일수 옵션을 주면 되는데... 생각한 일수보다 1 적게 주어야 함
  • 예를 들어 3일 초과한 파일을 삭제하려면 -mtime +2
Bash
Copy
find 폴더 -name 파일명 -mtime +일수 -delete
Bash
Copy
find 폴더 -name 파일명 -mtime +일수 -exec rm -f {} \;
Bash
Copy
find 폴더 -name 파일명 -mtime +일수 | xargs rm -f

1.1 실행예시[ | ]

  • 매일 04시 백업파일을 보관하는 폴더 /backup/ 에서 3일이 초과한 파일들을 삭제해보자.[1]
Console
Copy
root@zetadb:~# find /backup/ -name '*.tgz' | sort
/backup/2016-04-24_0400.zetadb.file.tgz
/backup/2016-04-25_0400.zetadb.file.tgz
/backup/2016-04-26_0400.zetadb.file.tgz
/backup/2016-04-27_0400.zetadb.file.tgz
/backup/2016-04-28_0400.zetadb.file.tgz
/backup/2016-04-29_0400.zetadb.file.tgz
/backup/2016-04-30_0400.zetadb.file.tgz
→ 7개 파일( 24~30일 )이 있음
→ 이중 3일치(28, 29, 30일분)는 그대로 두고 나머지를 삭제하고자 한다.
Console
Copy
root@zetadb:~# find /backup/ -name '*.tgz' -mtime +2
/backup/2016-04-25_0400.zetadb.file.tgz
/backup/2016-04-27_0400.zetadb.file.tgz
/backup/2016-04-26_0400.zetadb.file.tgz
/backup/2016-04-24_0400.zetadb.file.tgz
→ 삭제대상은 4개 파일( 24~27일 )
Console
Copy
root@zetadb:~# find /backup/ -name '*.tgz' -mtime +2 -delete
root@zetadb:~# find /backup/ -name '*.tgz'
/backup/2016-04-28_0400.zetadb.file.tgz
/backup/2016-04-29_0400.zetadb.file.tgz
/backup/2016-04-30_0400.zetadb.file.tgz

2 방법 2: 특정월[ | ]

  • 2011년 8월 기준 예시
대상 파일들 확인
Bash
Copy
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2011-08
대상 파일들 삭제
Bash
Copy
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2011-08 | awk '{print $2}' | xargs rm -f

3 같이 보기[ | ]

4 주석[ | ]

  1. 현재시각은 2016-04-30 20:26
편집자 J Jmnote 1.233.52.70 Jmnote bot
문서 댓글 (2)
Jmnote 2016-04-30
+를 입력하는게 맞는 것 같습니다. 저는 + 없이 입력했더니 해당 시점만 나옵니다. 테스트하여 내용을 수정했으니 참고바랍니다. ( 테스트 환경: 우분투 12.04 및 14.04, find 4.4.2 )
백승현 2016-04-30
mtime 문법이 이상합니다. 확인 부탁합니다. + 없이 숫자를 입력해야 특정 시점 이전으로 검색이 됩니다. +가 들어가면 이상한 값이 나옵니다.