dir | Sort-Object -Property LastWriteTime | Select-Object -Last 1
这对于大量文件来说效率不高。
是否有内置的方法来有效地找到极值?
答案 0 :(得分:3)
对于更多的.NET程序员而言: - )
[Linq.Enumerable]::First([Linq.Enumerable]::OrderByDescending((new-object IO.DirectoryInfo $pwd).EnumerateFiles(), [Func[IO.FileInfo,DateTime]]{param($f) $f.LastWriteTime}))
这将返回完整的.NET FileInfo对象。它似乎与@ mjolinor的解决方案执行的顺序相同 - 在有限的测试中。
答案 1 :(得分:2)
另一种方法:
$newest = $null
dir | % { if ($newest -eq $null -or $_.LastWriteTime -gt $newest.LastWriteTime) { $newest = $_ } }
$newest
答案 2 :(得分:2)
我知道要实现大目录的最快方法是:
(cmd /c dir /b /a-d /tw /od)[-1]
答案 3 :(得分:1)
这是一种方法。函数Max
:
function Max ($Property)
{
$max = $null
foreach ($elt in $input)
{
if ($max -eq $null) { $max = $elt }
if ($elt.$Property -gt $max.$Property) { $max = $elt }
}
$max
}
可用于定义Newest
:
function Newest () { $input | Max LastWriteTime }
可以这样称呼:
dir | Newest
它也可用于定义Largest
:
function Largest () { $input | Max Length }
E.g:
dir -File | Largest
同样,Min
可用于定义Oldest
和Smallest
:
function Min ($Property)
{
$min = $null
foreach ($elt in $input)
{
if ($min -eq $null) { $min = $elt }
if ($elt.$Property -lt $min.$Property) { $min = $elt }
}
$min
}
function Oldest () { $input | Min LastWriteTime }
function Smallest () { $input | Min Length }