【问题标题】:What is the FileSystem provider filter syntax?什么是文件系统提供程序过滤器语法?
【发布时间】:2015-10-21 10:56:09
【问题描述】:

Get-Help Get-ChildItem 显示-Filter 参数,显示文字“Specifies a filter in the provider's format or language”。该语言在 Powershell 所称的“提供者”之间有所不同,并且文件系统被声明为其中之一。但是我没有找到关于文件系统提供者的过滤器语法的任何语法描述。有什么帮助吗?

【问题讨论】:

    标签: powershell filter powershell-4.0


    【解决方案1】:

    文件系统提供程序支持的过滤器语法很少(如果全部)记录,可能是因为没什么可说的。

    简而言之,它只支持您在 Windows XP 时代搜索中所知道的简单通配符匹配:

    任何带有扩展名的文件:

    *.*
    

    任何带有.txt 扩展名的文件:

    *.txt
    

    部分通配符匹配:

    *something*.txt
    

    单字符匹配(匹配myfile1.jpg 但不匹配myfile01.jpg):

    myfile?.*
    

    简单字符集(匹配bearbeer):

    be[ae]r
    

    简单字符范围(匹配filea.txtfileb.txtfilec.txt):

    file[a-c].txt
    

    注意:它支持每个过滤器的单个表达式,因此这是非法的:

    *.jpg|*.txt
    

    【讨论】:

    • 显然我很愚蠢,我注意到[-Filter] 是一个可选且基于位置的参数,我习惯于dir *.txt 其中*.txt 实际上不是路径而是筛选。因此,在获得FileInfo 对象集之前,几乎没有什么东西可以通过Get-ChildItem 过滤名称。悲伤但真实。
    • 确实如此。如果您想要多个过滤器,您可以使用 -Include - 支持相同的基本通配符语法,但接受字符串值数组:-Include "??id*.jpg","*.txt"
    • 我还了解到 PS5(或者可能是 PS1+,但它是隐藏的)允许 -attributes 进行额外过滤。可悲的是,没有按日期过滤,我真的想知道是否有比将发现的文件传送到Where-Object 更好的方法。再次感谢。
    • Here is -Filter 参数的有用信息
    猜你喜欢
    • 2021-08-19
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多