尋找某個資料夾下所有包含大寫字母的資料夾

尋找某個資料夾下所有包含大寫字母的資料夾

我想查找某個資料夾下方至少包含一個大寫字母的所有資料夾。

到目前為止我已經嘗試過這個電源外殼:

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

但它失敗了,因為它列出了名稱中包含大寫字母的所有資料夾。我只想refs列出 的子資料夾。

我的錯誤在哪裡?當我在正則表達式測試引擎中嘗試正則表達式時,它正確地僅列出refs.顯然動力殼引擎的工作方式有所不同?

答案1

確實很奇怪。看來-Match操作員不會關心大小寫,無論正規表示式是什麼(或可能有不同的解釋)。

儘管如此,更改-Match-CMatch(區分大小寫的匹配)似乎適用於 ma 範例目錄:

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')

相關內容