cron
다음 명령을 사용하여 일주일에 한 번씩 로그를 정리 하려고 합니다 .
@weekly find /var/log/ \( -iregex ".*\.[2-20]+" -o -iname "*.gz" \) -exec rm {} \; 2>&1
좋아요?
답변1
[2-20]+
2
숫자가 에서 범위에 있는지 테스트하는 올바른 방법이 아닙니다 20
. 정규식의 대괄호는 그 안에 있는 문자와 일치하는 단일 문자에만 일치합니다. -
문자 범위(예: 2-9
또는 a-z
) 2-2
를 지정하기 위해 문자 세트에 사용 됩니다 2
. So 는 , , 등과 같은 모든 문자 및 시퀀스를 일치시키는 것과 [2-20]+
같습니다 .[20]+
2
0
2
20
02
2200
그것은해야한다 ([2-9]|1[0-9]|20)
. 이는 to 또는 뒤에 오는 2
단일 숫자와 일치합니다 .9
1
0
9
20
GNU를 사용하는 경우 연산자를 대신 find
사용할 수 있습니다 .-delete
-exec rm {} \;
2>&1
표준 출력을 리디렉션하지 않는 경우에는 사용할 필요가 없습니다. 기본적으로 표준 출력과 표준 오류는 모두 사용자에게 메일로 전송됩니다.
@weekly find /var/log/ \( -iregex '.*\.([2-9]|1[0-9]|20)' -o -iname "*.gz" \) -delete