如何在PowerShell中筛选含大写或以2+大写开头的文件/文件夹?
PowerShell 区分大小写匹配文件名的解决方案
1. 筛选以2[A-Z](大写)开头的文件/文件夹
你的问题根源在于PowerShell的-match运算符默认不区分大小写,导致[A-Z]会同时匹配小写字母。只需改用区分大小写的-cmatch运算符即可解决:
ls -Recurse | Where-Object {$_.Name -cmatch '^2[A-Z]'}
正则中的
^用于锚定字符串开头,确保是文件名的第一个字符为2、第二个为大写字母,避免误匹配文件名中间出现2[大写字母]的情况(比如abc2X.txt)。如果你的需求是文件名任意位置包含2[大写字母],可以去掉^。
2. 筛选名称仅含大写字母的文件/文件夹
同样使用-cmatch运算符,配合锚定整个字符串的正则表达式,确保文件名的每一个字符都是大写A-Z:
ls -Recurse | Where-Object {$_.Name -cmatch '^[A-Z]+$'}
如果需要允许文件名包含空格、数字等其他特定字符,可调整正则规则,比如允许数字的话改为^[A-Z0-9]+$,按需修改即可。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

