我正在尝试在目录中找到多个文件的最新版本。目前,我正在为每个文件调用GCI
,但这非常慢,所以我想用唯一的文件名缓存所有结果,然后只在缓存中执行查找。
我目前正在做以下事情:
Gci $filePath -Recurse | ?{ -Not $_.PSIsContainer } | Group-Object Name
我正在尝试将其转换为与C#代码等效的powershell:
group.ToDictionary(g => g.Key, g => g.Values.OrderByDescending(v => v.ModifiedAt).First().FullName)
我如何在Powershell中完成此任务?
答案 0 :(得分:1)
我要创建文件哈希表的方法是创建一个空的哈希表,然后用你的GCI结果填充它:
$files = ${}
GCI $filepath -Recurse -File | Group Name | ForEach{ $files.Add($_.Name, ($_.Group | Sort LastWriteTime)) }
或者,如果您想要的是最新文件,请在| Select -Last 1
之后添加Sort LastWriteTime
。如果您关心的只是路径,您甚至可以| Select -Last 1 -ExpandProperty FullName
。
$Files = ${}
GCI $filepath -recurse | Group Name | ForEach{ $files.Add($_.Name, ($_.Group | Sort LastWriteTime | Select -Last 1 -ExpandProperty FullName)) }