使用Powershell,如何按日期排序计数文件列表
pchost_00364_20160412143516.dat
pchost_00364_20160412144751.dat
pchost_00364_20160412150333.dat
pchost_00364_20160412150452.dat
pchost_00364_20160412151127.dat
pchost_00364_20160412152939.dat
pchost_00364_20160412153029.dat
pchost_00364_20160412153101.dat
pchost_00364_20160412153135.dat
pchost_00364_20160412153215.dat
pchost_00364_20160412160907.dat
pchost_00906_20160412161546.dat
pchost_00907_20160412155312.dat
pchost_00907_20160412155357.dat
pchost_00910_20160412160949.dat
pchost_00916_20160412155545.dat
pchost_00918_20160412144047.dat
pchost_00918_20160412154908.dat
pchost_00940_20160412143732.dat
pchost_00940_20160412150611.dat
pchost_00940_20160412150622.dat
pchost_00940_20160412161126.dat
pchost_00941_20160412143016.dat
pchost_00941_20160412143731.dat
pchost_00941_20160412162005.dat
pchost_00942_20160412155547.dat
pchost_00943_20160412143032.dat
pchost_00943_20160412143200.dat
pchost_00943_20160412143617.dat
pchost_00943_20160412144010.dat
pchost_00943_20160412144704.dat
pchost_00943_20160412145532.dat
pchost_00943_20160412160138.dat
pchost_00951_20160412145544.dat
pchost_00951_20160412161626.dat
pchost_00962_20160412161609.dat
pchost_01529_20160412142948.dat
pchost_01529_20160412143749.dat
pchost_01529_20160412144658.dat
pchost_01529_20160412145010.dat
pchost_01529_20160412150214.dat
pchost_01529_20160412150630.dat
pchost_01529_20160412150848.dat
pchost_01529_20160412151925.dat
pchost_01529_20160412161840.dat
pchost_03494_20160412142929.dat
pchost_03494_20160412144528.dat
pchost_03494_20160412144718.dat
pchost_03494_20160412155340.dat
pchost_03499_20160412154603.dat
pchost_03964_20160412144550.dat
pchost_03964_20160412160336.dat
pchost_04152_20160412145420.dat
pchost_04872_20160412161618.dat
答案 0 :(得分:1)
许多不同的方法。这是一个例子
$files = @'
pchost_03964_20160412160336.dat
pchost_04152_20160412145420.dat
'@ -split "`n"
$files | sort {$_.substring($_.lastindexof('_'))}
这是基于您的评论的另一种选择
$files = @'
name
pchost_03964_20160412160336.dat
pchost_04152_20160412145420.dat
'@ | ConvertFrom-Csv
$results = foreach ($file in $files) {
$split = $file.name.Split('_ ')
$date = $split[2].Substring(0, $split[2].IndexOf('.'))
$year = $date.Substring(0, 4)
$month = $date.Substring(4, 2)
$day = $date.Substring(6, 2)
$hour = $date.Substring(8, 2)
$minute = $date.Substring(10, 2)
$second = $date.Substring(12, 2)
[pscustomobject]@{
Name = $split[1]
Date = "$year $month $day"
HMS = "$hour$minute$second"
}
}
$results | group name, date | % {
$group = $_.group | sort date, hms -Descending | select -f 1
$date = $group.date, $group.hms -join ' '
[pscustomobject]@{
Count = $_.Count
Name = $group.name
Date = $date
}
} | sort date