使用PowerShell查找与模式匹配的第一个文件
我想select一个目录中的任何一个“.xls”文件。 问题是dir命令可以返回不同的types。
gci *.xls
将返回
- 对象[]如果有多个文件
- FileInfo如果只有一个文件
- 如果没有文件,则返回null
我可以处理null,但我怎样才能select“第一个”文件?
您可以强制PowerShell返回一个数组,即使只有一个项目通过将语句包装到@(...)
:
@(gci *.xls)[0]
将为您的三个案件的每一个工作:
- 它返回文件集合的第一个对象
- 它返回唯一的对象,如果只有一个
- 它返回
$null
没有任何对象开始
还有Select-Object
第一个参数:
Get-ChildItem -Filter *.xls | Select-Object -First 1 gci -fi *.xls | select -f 1
它与上面的工作非常相似,不同的是文件列表不需要完全由Get-ChildItem
枚举,因为pipe道在第一项之后被中止。 当有许多文件与filter匹配时,这可能会有所不同。