查找某个文件夹下所有包含大写字母的文件夹

查找某个文件夹下所有包含大写字母的文件夹

我想查找包含至少一个大写字母且位于某个文件夹下的所有文件夹。

到目前为止,我已经尝试过这个电源外壳:

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

但它失败了,因为它列出了名称中包含大写字母的所有文件夹。我只想refs列出子文件夹。

我的错误在哪里?当我在正则表达式测试引擎中尝试正则表达式时,它正确地仅列出了 的子文件夹refs。显然,Power Shell 引擎的工作方式不同?

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

相关内容