快速查找带有PowerShell 2的最新文件

提问

2008年的PowerShell 2。0 我需要检查一个目录中最新的文件有160万文件。 我知道我可以用“团员”这样的方式: 问题是,由于文件的数量,找到最新的文件需要很长时间。 有更快的方法找到吗? 由于每个项目组合的聚合,sort对象被认为是缓慢的。 但你不需要这样做,因为你可能会浏览每一个文件,并跟踪最新的文件: 有一些事情可以用来提高性能。 初次使用 而不是 因为过滤器被传递给底层的Win32API,这将会更快一点。 同样,由于脚本收集所有的文件,然后对它们进行排序,您可能会在排序阶段创建一个非常大的内存占用。我不知道是否有可能查询MFT或其他过程,以避免检索每个文件并检查lastwritetime,但另一种方法可能是: 我尝试了所有的文件,看到了以下内容: vs 这是一个相当好的储蓄。可能有更多的方法来提高性能

$path="G:\Calls"
$filter='*.wav'
$lastFile = Get-ChildItem -Recurse -Path $path -Include $filter | Sort-Object -Property LastWriteTime | Select-Object -Last 1
$lastFile.Name
$lastFile.LastWriteTime

回答

Get-ChildItem -Recurse |ForEach-Object `
    -Begin { $Newest = $Null } `
    -Process  { if ($_.LastWriteTime -gt $Newest.LastWriteTime) { $Newest = $_ } } `
    -End { $Newest }
回答

-Filter rather th-Include because the

gci -rec -file -filter *.wav | %{$v = $null}{if ($_.lastwritetime -gt $v.lastwritetime){$v=$_}}{$v}

measure-command{ ls -rec -file |sort lastwritetime|select -last 1}
. . .
TotalSeconds      : 142.1333641

measure-command { gci -rec -file | %{$v = $null}{if ($_.lastwritetime -gt $v.lastwritetime){$v=$_}}{$v} } 
. . .
TotalSeconds      : 87.7215093

▼版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说cuoshuo.com——程序员的报错记录

部分内容根据CC版权协议转载,如果您希望取消转载请发送邮件到cuoshuo8@163.com

辽ICP备19011660号-5