查找名称中包含前缀的所有文件?

时间:2014-03-14 16:00:04

标签: powershell powershell-v3.0

有以下数组。

$prefixes = 'abcdef, 123', 'xyx4, 222', 'bcde123$abc', .....

如何在文件夹下的列表中查找名称前缀的所有文件? (包括子文件夹)

2 个答案:

答案 0 :(得分:3)

{一种选择:

$prefixes = @(
'abc', 
'123',
'xyx',
'222',
'bcde'
) 

 [regex]$Prefix_Match = ‘(?i)^(‘ + (($prefixes |foreach {[regex]::escape($_)}) –join “|”) + ‘)’

 Get-ChildItem -Path '<folder root path>' -Recurse -File |
  where-object {$_.name -match $Prefix_Match}

答案 1 :(得分:1)

您可以在数组元素上使用Get-ChildItem[regex]::escape(),同时向-Filter参数添加通配符。

例如:

$array = @("file$1","file2")
foreach($element in $array) {
   Get-ChildItem c:\temp -Filter ([regex]::escape($element) + "*") -Recurse -File
}

将查找文件夹c:\temp中的所有文件以及以file$1file2

开头的子文件夹