使用PowerShell查找与模式匹配的第一个文件

时间:2009-09-30 19:09:21

标签: powershell

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

gci *.xls

将返回

  • object []如果有多个文件
  • FileInfo,如果只有一个文件
  • 如果没有文件,则为null

我可以处理null,但是如何选择“first”文件?

1 个答案:

答案 0 :(得分:92)

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

@(gci *.xls)[0]

适用于您的三种情况:

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

-First还有Select-Object参数:

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

与上面的工作方式非常相似,只是Get-ChildItem不需要完全枚举文件列表,因为管道在第一个项目之后被中止。当有许多文件与过滤器匹配时,这会产生影响。