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