나는 폴더에 .LOG 및 _log 같은 파일을 얻고, 내가 _log있는 파일을 찾을 수 /*.log$/하지만없는 가진 파일을 .log를 선택할 수 있어요. 패턴 매칭 로그 파일
지정된 폴더에서 파일의 두 유형을 취할 것입니다 정규식 패턴이 필요합니다.답변
귀하의 질문에 'perl'과 'linux'태그가 지정되었습니다. 여기서는 Perl 스타일의 정규 표현식에 대해 이야기하고 있다고 가정하겠습니다. 예를 들어 스 니펫에 표시되는 것처럼 보입니다.
*.
순서는 실수이다.
당신이 원하는 것을 집중 해 봅시다. 점으로 끝나는 파일 이름과 문자 '문자'가 일치하도록하려는 경우 밑줄로 끝나는 파일 이름과 문자 'log'가 일치하도록하려는 경우도 있습니다. 마지막 점이나 밑줄 앞에 올 수있는 "무엇이든"에 대해서는 정말로 염려하지 않아야합니다. 따라서 정규 표현식은 아마도 다음과 같이 작성하는 것이 더 낫습니다.
/[._]log$/
도트 스타가 신경 쓸 필요가 없습니다. 이 상황에서는 도움이되지 않습니다.
리터럴 문자 'log'앞에 선택적으로 정수 시퀀스 (질문에 언급되지 않았지만 후속 조치 의견 중 하나에서 논의 됨)가 뒤 따르는 파일과 패턴을 일치 시키려면 패턴을 쓸 수 있습니다 같은 : 여기
/[._]log\d*$/
'스타'는 도움이된다; 그것은 'g'와 문자열의 끝 사이에 끼워진 0 개 이상의 숫자를 허용합니다.
정규 표현식 /.*[._]log$/
를 사용합니다. 합니다 (*
그것이 가정 무엇제로 또는-이상으로 일치하는 말을하지 않기 때문에) /*.log$/
법적 정규 표현식하지 않습니다 - 난
은 첫 번째 경우는 일을 놀라게했다. 현재 결과를 다시 확인하십시오.
감사합니다. sarnold 첫 번째 결과는 작동했지만 잘못 확인했습니다. –
sarnold 그리고 한 가지 더이 정규식 다비 _log1의 or.log1 같은 파일과 유사 –
나는 완전히 다비의 솔루션 (upvoting로) 동의하지만, 일반적으로 더 의미가 있습니다, 그리고
my $dir = "/path/here";
my @log_files = grep { /[\._]log\d*$/ } glob("$dir/*");
print join "\n", @log_files;
이 잡을 것 특정 디렉토리에서 파일의 목록을 가져올 글로브()를 사용, 가독성을 증가
foo.log
foo_log
foo.log1
foo_log22
이 질문의 범위를 벗어난 것 같습니다. – aglassman
- 1. 람다 식 패턴 매칭
- 2. 변수 : 템플릿 매칭 패턴
- 3. 스키마의 패턴 매칭
- 4. Linq 패턴 매칭
- 5. 프롤로그와의 패턴 매칭 문제
- 6. 함수와 패턴 매칭
- 7. 숫자 패턴 매칭
- 8. 자바에서 패턴 매칭
- 9. 안드로이드 패턴 매칭
- 10. 매칭 반복 패턴
- 11. match-lambda와의 패턴 매칭
- 12. 자바 패턴 매칭
- 13. 하스켈 패턴 매칭 - 뭔데?
- 14. 얼랭 패턴 매칭 문제
- 15. 복잡한 패턴 매칭
- 16. 패턴 매칭, 튜플 및 곱셈
- 17. 파이썬에서 패턴 매칭 기능이 있나요?
- 18. 분리 및 패턴 매칭 기술
- 19. F # 튜플 패턴 매칭 질문
- 20. C#의 패턴 매칭 문제
- 21. 펄 패턴 매칭 시스템 변수
- 22. MySQL의 문 - 패턴 매칭 등
- 23. 빠른 2 차원 패턴 매칭
- 24. 간단한 PHP 문자열 매칭 패턴
- 25. 패턴 매칭, F # vs Erlang
- 26. 빈 세트의 하스켈 패턴 매칭
- 27. 스칼라 패턴 매칭 컴파일러 경고
- 28. 하스켈의 (고차) 함수와의 패턴 매칭
- 29. F # 패턴 매칭 : 매칭 함수/부속 유형 목록?
- 30. weblogic 설정 로그 파일 이름 순환 패턴
감사를 골라 /.*[._]log$/하지만 난 .log1, .log2와 _log1, _log2와 같은 같은 파일을 얻을 수 있습니다 등등 –
다음 내 업데이 트를 참조하십시오 (그리고 당신은 원래의 질문을 언급해야 그것을 업데이 트해야합니다). – DavidO
좋은 대답입니다. 받아 들여야합니다. – aglassman