특정 폴더 아래에 대문자가 포함된 모든 폴더 찾기

특정 폴더 아래에 대문자가 포함된 모든 폴더 찾기

특정 폴더 아래에 하나 이상의 대문자가 포함된 모든 폴더를 찾고 싶습니다.

나는 지금까지 이 Power Shell을 가지고 놀았습니다.

Get-ChildItem -Recurse
    | ?{ $_.PSIsContainer }
    | Where-Object {$_.FullName -match "^.*?refs\\.*[A-Z]+.*$"}
    | Select-Object FullName

그러나 이름에 대문자가 포함된 모든 폴더를 나열한다는 점에서 실패합니다. 하위 폴더만 refs나열되기를 원합니다 .

내 오류는 어디에 있습니까? 정규식 테스트 엔진에서 정규식을 시도하면 refs. 분명히 파워 쉘 엔진이 다르게 작동합니까?

답변1

참으로 이상합니다. -Match연산자는 정규 표현식의 내용(또는 다른 설명이 있을 수 있음)에 관계없이 대소문자를 신경 쓰지 않는 것 같습니다 .

그럼에도 불구하고 (대소문자 구분 일치) -Match로 변경하면 -CMatchma 샘플 디렉토리에서 작동하는 것 같습니다.

Get-ChildItem -Recurse -Directory | Where-Object FullName -CMatch "^.*?refs\\.*[A-Z]+.*$" | select Fullname

더 큰 제어를 위해 유형 가속기를 사용할 수도 있습니다 [regex].

$regex = [regex]"^.*?refs\\.*[A-Z]+.*$"
$match = $regex.Match('C:\Users\user\refs\whatever\test1\test2\test3')

관련 정보