ここから本文です

すぐ使えるWindows PowerShell基本Tips:「Select-Stringコマンドレット」

@IT 7月6日(水)6時10分配信

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイル検索に役立つ「Select-String」コマンドレットです。

【その他の画像】この他の応用はこちら

●Select-Stringコマンドレットとは?

 Select-Stringコマンドレットは、特定のテキスト(文字列)を含むファイルを検索するためのコマンドレットです。例えば、「社外秘」や「Confidential」というテキストを含むファイルを検索することができます。

 Select-Stringコマンドレットは、UNIX/Linuxの「grep」コマンドやWindowsの「Findstr」コマンドと同じように使用できます。このコマンドレットによって取得したファイルに対して、暗号化などの別のタスクを実行するというように活用することもできます。

●Select-Stringコマンドレットの書式
Select-String [ファイルパス] [オプション]
※[ ]は省略可能な引数を示しています

●Select-Stringコマンドレットの主なオプション

 Select-Stringコマンドレットの主なオプションは次の通りです。

オプション / 意味
-Path / ファイルのパスを指定する。省略可能
-Pattern / 検索するテキストを文字列または正規表現で指定する
-NotMatch / 指定したパターンに一致しないファイルを検索する
-CaseSensitive / 大文字と小文字を区別する。省略時は区別されない


●指定したテキストが含まれるファイルを検索する

 「Select-String ファイルパス -Pattern 検索するテキスト」と実行すると、ファイルパスから指定したテキストが含まれるファイルを検索します。ファイルパスの指定はワイルドカード(*)も使用可能です。フルパスではなく、ファイル名のみを指定した場合は、カレントディレクトリから検索されます。

 ファイルパスで、ディレクトリのみを指定するとエラーになります。特定のディレクトリ内の全ファイルから検索する場合には、ファイルパスに「<ディレクトリパス>\*.*」と指定します。

○コマンドレット実行例

Select-String C:\Work\*.* -Pattern abc

 実行結果では、該当するファイル名、行番号、文字列データを確認することができます。また、特定の拡張子を持つファイルから検索する場合には、ファイルパスに「*.txt」などと指定します。


○指定したテキストを含まないファイルを検索する

 指定したテキストを含まないファイルを検索する場合には、「-NotMatch」オプションを使用します。

 以下の実行例では、「-NotMatch」オプション付けて、「abc」というテキストを含まないファイルを検索しています。

○コマンドレット実行例

Select-String C:\Work\*.* -Pattern abc -NotMatch


●大文字と小文字を区別して検索する

 既定では、指定したテキストの大文字と小文字は区別されません。検索したいテキストの指定で大文字と小文字を区別したい場合には、「-CaseSensitive」オプションを使用します。

 以下の実行例では、大文字と小文字を区別し、「abc」というテキストを含むファイルを検索しています(画面3)。

○コマンドレット実行例

Select-String C:\Work\*.* -Pattern abc -CaseSensitive



●筆者紹介 新井慎太朗:株式会社ソフィアネットワークに所属。2009年よりマイクロソフト認定トレーナーとして、Windowsを中心としたサーバおよびクライアント管理、仮想化技術に関するトレーニングを提供している。無類の猫好き。共同執筆者である国井家で飼われている猫に夢中。

最終更新:7月6日(水)6時10分

@IT