regex 如何找到名称中只有大写的ls文件?

gudnpqoy  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(93)

我只想筛选名称以2[A-Z]开头的文件和文件夹(仅限大写):

ls -recurse | Where-Object {$_.name -match '2[A-Z]'}

但它仍然返回小写文件。阅读Where-Object-match参数时,我没有看到解决这个问题的方法。

r1zk6ea1

r1zk6ea11#

PowerShell的比较运算符在默认情况下不区分大小写*,但它们具有**c前缀变体**,这些变体区分大小写*,即在-match运算符的情况下为**-cmatch**:

gci -recurse | Where-Object { $_.Name -cmatch '^2[A-Z]' }
  • gci用作Get-ChildItem的仅Windows ls别名的PowerShell惯用替代方法。
  • 请参阅this answer的底部部分,了解为什么最好避免为不同shell或平台的命令或实用程序命名别名。
  • RegexAssert^用于确保模式仅在文件名的 * 开始 * 处匹配。

或者,使用**simplified syntax**:

gci -recurse | Where-Object Name -cmatch '^2[A-Z]'

相关问题