x 일보다 오래된 apache 로그 파일을 저장 위치로 옮기는 짧은 스크립트가 있습니다. 정규 표현식은 mod_jk 디렉토리에있는 jk.shm.some_number 파일 이름을 캡쳐하고 있는데 이것은 원하지 않는 동작입니다 (mtime 플래그를 사용하여 며칠 동안 쿠션을 사용하면 현재 활성 파일이 우발적으로 배치되는 것을 피할 수 있습니다.) 아마도 그 이유는 나는이 문제가 지금까지 나타나지 않는 것을 보았다). 전체 정규식은 : '[error,access,error_log,access_log,mod_jk.log]*.[0-9]*'
나는 그저 바보 같은 운명으로 인해 일하고 있다고 생각합니다. 나 또한 mod_jk 부분을 자체적으로 실행하기 위해 'mod_jk.log.[0-9]*'
을 실행하려고 시도했으며 예상대로 작동합니다 (앞이나 뒤에 없음). 대괄호 안에 포함 시키면 jk.shm.some_number 파일이 나타납니다. 대괄호 안에있는 문자 범위와 일치하므로 추측합니다. RegexBuddy를 사용하여이 작업을하려하지만, 현명한 사람들 중 한 명이 내 실수를 지적하고 올바른 길로 나를 도울 수있을 것이라고 생각했습니다. .정규 표현식의 일부가 아닌 bash 쉘 명령의 Regex가 단독으로 작동합니다.
find -name '[error,access,error_log,access_log,mod_jk.log]*.[0-9]*' -type f
가장 일치하는 줄을 제공하십시오. –
error.11111111111, access.11111111, error_log.1111111111, access_log.1111111, mod_jk.log.111111111 기본적으로 아파치 로그 파일의 디렉토리와 하위 디렉토리에있는 로그 파일의 파일 이름은 위에서 설명한 것입니다. –
내 생각 엔 정규식을 사용하지 않고 glob 패턴을 사용하고있는 것 같습니다. 'mv {access, error, access_log, error_log, mod_jk.log}. [0-9] * dir'와 같은 것을 시도하는 경우 정규식이 아닌 확장 된 glob 패턴이고 중괄호 여야합니다. – tripleee