如何将值分组并排序到字典中?

时间:2017-05-25 18:37:23

标签: powershell

我正在尝试在目录中找到多个文件的最新版本。目前,我正在为每个文件调用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中完成此任务?

1 个答案:

答案 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)) }