특정 날짜 패턴의 파일을 삭제하는 방법

특정 날짜 패턴의 파일을 삭제하는 방법

폴더 아래에 /var/log/roler_t다음 파일이 있습니다.

-rw-r--r-- 1 roler smike    37652 Jun 25 01:44 2018-06-23T02:KJU:00
-rw-r--r-- 1 roler smike    41742 Jun 25 01:45 2018-06-21T20:KJU:00
-rw-r--r-- 1 roler smike    36762 Jun 25 01:46 2018-06-22T08:KJU:00
-rw-r--r-- 1 roler smike    51764 Jun 25 01:47 PL-06-23T12:KJU:00
-rw-r--r-- 1 roler smike    42751 Jun 25 01:48 2018-06-21T16:KJU:00
-rw-r--r-- 1 roler smike    34627 Jun 25 01:49 2018-06-22T23:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 2018-06-23T05:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 2018-06-22T20:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 JFG:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 PL-22T20:KJU:00
-rw-r--r-- 1 roler smike    36643 Jun 25 01:53 2018-06-22T01:KJU:00

10일이 넘고 특정 날짜 패턴(예 2018-06-23: .

예상되는 결과는 다음과 같습니다.

다음 파일은 다음에 보관됩니다./var/log/roler_t

-rw-r--r-- 1 roler smike    51764 Jun 25 01:47 PL-06-23T12:KJU:00
-rw-r--r-- 1 roler smike    59828 Jun 25 01:51 JFG:KJU:00
-rw-r--r-- 1 roler smike    33561 Jun 25 01:52 PL-22T20:KJU:00

답변1

이 명령을 사용하여 날짜별로 파일을 필터링할 수 있습니다 find.

예를 들어:

find /var/log/roler_t -mtime +10

모든 파일 반환수정일> 10일.

-atime다시 말하지만, (액세스 시간), (상태 변경 시간) 등을 사용할 수 있습니다. flags 하지만 그것이 바로 당신이 찾고 있는 것이라고 -ctime생각합니다 .-mtime

명령어 하나로 삭제하고 싶다면(하지만 추천드립니다)언제나결과가 find예상과 일치하는지 미리 확인하세요.)

find /var/log/roler_t -mtime +10 -exec rm {} \;

답변2

이것은 이전 질문과 유사합니다. 다음을 통해 얻을 수 있습니다.

$ find /var/log/roler_t -mtime +10 -name "XXXX-XX-XX*"

XXXX-XX-XX는 찾고 있는 날짜 스탬프입니다. 만약 너라면알다연도, 월, 일은 찾고 있는 수정 시간에 해당합니다. -name 옵션의 매개변수를 다음과 같이 변경할 수 있습니다.

$find /var/log/roler_t -mtime +10 -name "`date -d'now - 10 days' +'%y-%m-%d'*"

mtime 및 date 스탬프가 필요한 것과 일치하는지 확인하기 위해 date 명령을 사용하여 일 수를 빼야 할 수도 있지만 파일 이름 접두사는 자동으로 생성됩니다.

"2018-09-13"과 같이 날짜 스탬프와 유사한 문자열로 시작하는 파일 이름만 일치시키려면 다음 명령을 사용하십시오.

/var/log/roler_t -mtime +10 -name "[12][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]*"

관련 정보