2011年1月21日金曜日

◆グループ集計(ブレーク集計)

PowerShell: ◆グループ化して最終データを生かすでGroup-Objectコマンドレットを使ったときにグループ集計もやってみようと思い、そのままになっていたので試してみようと思う。

そもそも、かつてはプログラムといえば「ソート、マッチング、ブレーク集計」するための物。
なのでグループ集計なんて簡単にできるのかと思ったのだが、意外と「これ」といったコマンドが見つからない。
仕方なく、ごねごねとやって見る。

ファイルサーバーで容量を食っているファイルはどんな種類のファイルかを見てみたかったので、まずはある拡張子のファイルを抽出して容量の合計を求める。

PS>(dir d:\documents -Filter *.xlsx -r | measure length -sum).sum /1kb
86.802734375

あとは、これを特定の拡張子だけではなく全てのファイルに対して行えば良い。

001
002
003
004
005
006
007
008
009
010
011

Dir d:\documents -r | ?{!$_.psiscontainer} | Group-Object Extension | %{
 
$len = $_ | select -ExpandProperty Group | measure -Sum -Property length
  $len = $len.sum / 1kb
  Add-Member -Type NoteProperty -Name Length -Value $len -Input $_ -PassThru
} |
 
   
sort length -Descending |
 
   
ft name,count,
@{
                    name
="length(kb)"
                    expression={$_.length.ToString("#,##0.0"
)}
                    alignment
="Right"
                    } -auto

20110121115837

もう少しすっきり書けても良いような気はするのだが・・・。

1 件のコメント:

  1. このコメントはブログの管理者によって削除されました。

    返信削除