この記事は以前に http://blog.hiros-dot.net/ に書いたものです。
Sort-Objectコマンドレットを使用すると、パイプで受け取ったデータ(オブジェクト)の並べ替えを行うことができます。
たとえば、dirコマンド(Get-ChildItemコマンドレット)で取得した結果をデータサイズ順に並べ替える例を見てみましょう。
PS C:\Work> dir | Sort-Object { $_.Length } ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work3 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2008/01/09 15:29 8 Test03.txt -a--- 2008/01/09 15:35 50 Test05.txt -a--- 2008/01/09 15:35 50 Test01.txt -a--- 2008/01/09 17:45 102 Test02.txt -a--- 2008/01/09 17:45 102 Test04.txt
最初に、Sort-Objectコマンドレットの隣にある $_ について説明します。
パイプ演算子(|)を使用してデータを受け取ると、受け取ったデータは $_ に代入されます。$_は特殊な変数です。
$_.Length とすることで受け取ったデータのLengthプロパティを指し示すことになります。
上記の例では Sort-Object { $_.Length } としているので、データサイズ順に並べ替えることを意味します。
また、Sort-Objectコマンドレットでは並べ替えに昇順/降順を指定することが可能です。
パラメータを指定しない場合は昇順となります。(上記の例) -descending パラメータを使用した場合は降順となります。
ということで、先ほどの並べ替えを降順でやってみましょう。
PS C:\Work> dir | Sort-Object -Descending { $_.Length } ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work3 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2008/01/09 17:45 102 Test02.txt -a--- 2008/01/09 17:45 102 Test04.txt -a--- 2008/01/09 15:35 50 Test05.txt -a--- 2008/01/09 15:35 50 Test01.txt -a--- 2008/01/09 15:29 8 Test03.txt
次回はSelect-Objectコマンドレットについて説明したいと思います。
コメント