"리눅스 날짜 기준으로 파일 삭제하기"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
(사용자 2명의 중간 판 20개는 보이지 않습니다)
2번째 줄: 2번째 줄:
;리눅스 날짜 기준으로 파일 삭제
;리눅스 날짜 기준으로 파일 삭제


==방법==
==방법 1: 며칠 전==
{{참고|리눅스 n일전 파일 삭제}}
* find 명령어에 <code>-mtime +일수</code> 옵션을 주면 되는데... 생각한 일수보다 1 적게 주어야 함
* 예를 들어 3일 초과한 파일을 삭제하려면 <code>-mtime +2</code>
<syntaxhighlight lang='bash'>
find 폴더 -name 파일명 -mtime +일수 -delete
</syntaxhighlight>
<syntaxhighlight lang='bash'>
find 폴더 -name 파일명 -mtime +일수 -exec rm -f {} \;
</syntaxhighlight>
<syntaxhighlight lang='bash'>
find 폴더 -name 파일명 -mtime +일수 | xargs rm -f
</syntaxhighlight>
 
===실행예시===
* 매일 04시 백업파일을 보관하는 폴더 /backup/ 에서 3일이 초과한 파일들을 삭제해보자.<ref>현재시각은 2016-04-30 20:26</ref>
<syntaxhighlight lang='console'>
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
</syntaxhighlight>
:→ 7개 파일( 24~30일 )이 있음
:→ 이중 3일치(28, 29, 30일분)는 그대로 두고 나머지를 삭제하고자 한다.
<syntaxhighlight lang='console'>
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
</syntaxhighlight>
:→ 삭제대상은 4개 파일( 24~27일 )
<syntaxhighlight lang='console'>
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
</syntaxhighlight>
 
==방법 2: 특정월==
*2011년 8월 기준 예시
*2011년 8월 기준 예시
;대상 파일들 확인
{{소스헤더|대상 파일들 확인}}
<source lang='bash'>
<syntaxhighlight lang='bash'>
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2011-08
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2011-08
</source>
</syntaxhighlight>


;대상 파일들 삭제
{{소스헤더|대상 파일들 삭제}}
<source lang='bash'>
<syntaxhighlight lang='bash'>
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2011-08 | awk '{print $2}' | xargs rm -f
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2011-08 | awk '{print $2}' | xargs rm -f
</source>
</syntaxhighlight>
 
==변형==
위 예시는 2011년 8월 기준 예시이다.
*2011년 생성된 파일을 모두 삭제하려면 → 2011-08 대신 2011을 입력한다.
*9월달 생성된 파일을 삭제하려면 → 2011-08 대신 2011-09를 입력한다.
*8월 중순(1X일) 생성된 파일을 삭제하려면 → 2011-08 대신 2011-08-1을 입력한다.
*8월 15일 생성된 파일을 삭제하려면 → 2011-08 대신 2011-08-15를 입력한다.


==같이 보기==
==같이 보기==
26번째 줄: 63번째 줄:
*[[db_backup.sh 2주 보관]]
*[[db_backup.sh 2주 보관]]
*[[ls time-style]]
*[[ls time-style]]
*[[리눅스 find]]
==주석==


[[분류:리눅스]]
[[분류:리눅스]]
[[분류:bash]]
[[분류:bash]]

2020년 11월 2일 (월) 02:40 기준 최신판

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

1 방법 1: 며칠 전[ | ]

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

1.1 실행예시[ | ]

  • 매일 04시 백업파일을 보관하는 폴더 /backup/ 에서 3일이 초과한 파일들을 삭제해보자.[1]
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일분)는 그대로 두고 나머지를 삭제하고자 한다.
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일 )
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월 기준 예시
대상 파일들 확인
ll --time-style full-iso | awk '{print $6" "$9}' | grep 2011-08
대상 파일들 삭제
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
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}