【问题标题】:Find the first file that matches a pattern using PowerShell使用 PowerShell 查找与模式匹配的第一个文件
【发布时间】:2010-12-02 18:35:03
【问题描述】:

我想选择目录中的任何一个“.xls”文件。问题是dir 命令可以返回不同的类型。

gci *.xls

会回来

  • object[] 如果有多个文件
  • 文件信息(如果只有一个文件)
  • 如果没有文件则为空

我可以处理 null,但我如何只选择“第一个”文件?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您可以强制 PowerShell 返回一个数组,即使只有一项存在,也可以通过将语句包装到 @(...) 中:

    @(gci *.xls)[0]
    

    适用于您的三种情况:

    • 它返回文件集合的第一个对象
    • 如果只有一个对象,则返回唯一的对象
    • 它返回 $null 表示没有任何对象以开头

    还有-First参数Select-Object

    Get-ChildItem -Filter *.xls | Select-Object -First 1
    gci -fi *.xls | select -f 1
    

    它的工作原理与上述几乎相同,只是文件列表不需要由Get-ChildItem 完全枚举,因为管道在第一项之后中止。当有许多文件与过滤器匹配时,这可能会有所不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 2018-08-20
      • 2014-03-19
      • 2013-10-19
      • 2020-05-26
      • 1970-01-01
      • 2016-01-19
      相关资源
      最近更新 更多