우리는 다음과 같은 로그를 가지고 있습니다
/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\}
: .