根据文件名数组搜索文件路径

Search File Paths Based on File Name Array

我的 PowerShell 脚本中有两个字符串数组:

$search = @('File1', 'File2');
$paths = @('C:\Foo\File1.pdf', 'C:\Foo\Bar.doc', 'C:\Foo\File2.txt');

如何从搜索数组中获取包含文件名的所有文件路径?这可以在管道中完成吗?

您可以使用 GetFileNameWithoutExtension 方法检索路径的文件名并使用 -in 过滤它们:

$paths | ? { [System.IO.Path]::GetFileNameWithoutExtension($_) -in $search }

如果您需要进行部分匹配,您可以这样做:

$paths | Where-Object {
  $filename = Split-Path $_ -Leaf
  $search | Where-Object { $filename -like "*$_*" }
}