or1ko's diary

日々を書きます

Reduce系コマンド

以前、Reduceっぽいコマンドとして、ForEach-Objectコマンドをあげたが、PowerShellを日頃使っていくなかで、他にもいくつかみつけた。

  • Measure-Object : 合計とか求めるコマンド

以下みたいに使う。Count以外は指定しないと計算しない。

PS C:\> 1..10 | Measure-Object -Sum
Count    : 10
Average  :
Sum      : 55
Maximum  :
Minimum  :
Property :

下記のように、サブフォルダのファイルサイズの合計を数えたりする時に使う。

PS C:\Users\ori> Get-ChildItem -R | Measure-Object -Property length -Sum
Count    : 123
Average  :
Sum      : 38025
Maximum  :
Minimum  :
Property : length
  • Group-Object : グルーピングする

プロパティなどで、グルーピングする。

PS C:\Users\ori> 1..10 | Group-Object -Property {$_ % 2}
Count Name                      Group
----- ----                      -----
    5 1                         {1, 3, 5, 7...}
    5 0                         {2, 4, 6, 8...}

下記のように、カレントディレクトリ以下にあるファイルの拡張子をカウントしたり際に使う。
(コマンドが長くなったので短縮して記載)

PS C:\Users\ori> gci -r | group -p extension -n | sort -des -p count | select -f 10

Count Name
----- ----
 2584
 1579 .jpg
 1540 .class
 1231 .java
  583 .i
  355 .sha1
  278 .php
  253 .pom
  184 .ps1
  165 .txt