如何使用PowerShell进行区分大小写的文件搜索?

chr*_*ips 3 powershell search case-sensitive

Get-ChildItem -Path C:\ -Filter CAPS*
Run Code Online (Sandbox Code Playgroud)

找到caps.txt 我想确保它只能找到 CAPS.txt (或者例如 CAPS901918.whatever)

我已经尝试找到将Filter传递给表达式的方法,例如:

{ $_.What_I_just_said_to_filter_on -like [A-Z] }
Run Code Online (Sandbox Code Playgroud)

或者在收到结果后抑制输出,但我什么也没发现.

Pau*_*aul 6

尝试管道Get-ChilditemWhere-Object这样的:

Get-Childitem -Path C:\ | Where-Object {$_.what_you_want_to_filter -match "REGEX"}
Run Code Online (Sandbox Code Playgroud)

这里有类似的语法(谢谢FLGMwt)

Get-Childitem -Path C:\ | Where-Object {$_.Name -clike "CAPS*"}
Run Code Online (Sandbox Code Playgroud)

  • 注意,`-match`需要一个正则表达式.或者,如果您更喜欢`like`语法,`-clike`会强制区分大小写. (4认同)
  • 使用“-cmatch”进行区分大小写的匹配。 (3认同)

The*_*ian 6

文件系统提供程序的过滤器不区分大小写,但您可以将其通过管道传输到:

Where{-NOT ($_.BaseName -cmatch "[a-z]")}
Run Code Online (Sandbox Code Playgroud)

这将找到不包含小写字母的文件。如果您匹配大写字母,它将适用于至少有 1 个大写字母的任何文件,并且仍然可以包含小写字母。