날짜 형식의 파일 찾기 + 삭제

날짜 형식의 파일 찾기 + 삭제

우리는 다음과 같은 로그를 가지고 있습니다

/var/log/sync/manager.log.2018-06-14-00
/var/log/sync/manager.log.2020-01-14-07
/var/log/sync/manager.log.2020-01-14-02
/var/log/sync/manager.log.2020-01-14-03
/var/log/sync/manager.log.2020-01-14-04
/var/log/sync/manager.log.2020-01-14-34
/var/log/sync/manager.log.2020-01-10-06
/var/log/sync/manager.log.2020-01-14-04
/var/log/sync/manager.log.2019-04-14-05
/var/log/sync/manager.log.2020-01-14-06
/var/log/sync/manager.log.2020-01-14-76
/var/log/sync/manager.log.2020-01-14-982

다음과 같은 날짜 형식의 로그를 삭제하고 싶습니다.2020-01-14-06

나는 다음을 만들었습니다

find  var/log/sync/  -type f -mmin +60  -regex '.*\.log.*[0-9]$' -delete

그러나 ".log" 뒤의 모든 끝 번호를 제거합니다.

답변1

d='[0123456789]'
LC_ALL=C find /var/log/sync -name "*.log.$d$d$d$d-$d$d-$d$d-$d$d" \
  -type f -mmin +59 -delete

( -mmin-delete는 비표준 확장입니다.)

GNU의 경우 60분보다 오래된 파일을 삭제하려면 (또는 ) find입니다 .-mmin +59\( -mmin 60 -o -mmin +60 \)

답변2

나는 당신의 정규식이 그다지 좋지 않다고 생각합니다. 로그 뒤에 있습니다 .*\. 이는 로그 뒤의 모든 것이 정상이고 끝에는 숫자가 있음을 의미합니다. 그것은해야한다:

find var/log/sync/ -type f -mmin +60 -regextype sed -regex '.*\.log\.[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2,3\}$' -delete

-regextype sed적어도 내 컴퓨터에서는 양자화기를 활성화해야 합니다(예 \{2\}: .

관련 정보