【 Select-String 】コマンドレット――ファイルからテキスト(文字列)を検索する:Windows PowerShell基本Tips(3)
本連載は、Windows PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「Select-String」コマンドレットです。
本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイル検索に役立つ「Select-String」コマンドレットです。
Select-Stringコマンドレットとは?
Select-Stringコマンドレットは、特定のテキスト(文字列)を含むファイルを検索するためのコマンドレットです。例えば、「社外秘」や「Confidential」というテキストを含むファイルを検索することができます。
Select-Stringコマンドレットは、UNIX/Linuxの「grep」コマンドやWindowsの「Findstr」コマンドと同じように使用できます。このコマンドレットによって取得したファイルに対して、暗号化などの別のタスクを実行するというように活用することもできます。
- [参考]grepコマンド――特定の文字を含む行を抽出する(連載:Linux基本コマンドTips 第9回)
- [参考]grepコマンド(応用編その1)――空白を含む文字列を検索する/正規表現を使って検索する(連載:Linux基本コマンドTips 第10回)
- [参考]grepコマンド(応用編その2)――複数の文字列を検索する(連載:Linux基本コマンドTips 第11回)
Select-Stringコマンドレットの主なオプション
Select-Stringコマンドレットの主なオプションは次の通りです。
オプション | 意味 |
---|---|
-Path | ファイルのパスを指定する。省略可能 |
-Pattern | 検索するテキストを文字列または正規表現で指定する |
-NotMatch | 指定したパターンに一致しないファイルを検索する |
-CaseSensitive | 大文字と小文字を区別する。省略時は区別されない |
指定したテキストが含まれるファイルを検索する
「Select-String ファイルパス -Pattern 検索するテキスト」と実行すると、ファイルパスから指定したテキストが含まれるファイルを検索します。ファイルパスの指定はワイルドカード(*)も使用可能です。フルパスではなく、ファイル名のみを指定した場合は、カレントディレクトリから検索されます。
ファイルパスで、ディレクトリのみを指定するとエラーになります。特定のディレクトリ内の全ファイルから検索する場合には、ファイルパスに「<ディレクトリパス>\*.*」と指定します。
以下の実行例では、「C:\Work」フォルダ内から「abc」というテキストを含む全てのファイルを検索しています(画面1)。
コマンドレット実行例
Select-String C:\Work\*.* -Pattern abc
実行結果では、該当するファイル名、行番号、文字列データを確認することができます。また、特定の拡張子を持つファイルから検索する場合には、ファイルパスに「*.txt」などと指定します。
指定したテキストを含まないファイルを検索する
指定したテキストを含まないファイルを検索する場合には、「-NotMatch」オプションを使用します。
以下の実行例では、「-NotMatch」オプション付けて、「abc」というテキストを含まないファイルを検索しています(画面2)。
コマンドレット実行例
Select-String C:\Work\*.* -Pattern abc -NotMatch
大文字と小文字を区別して検索する
既定では、指定したテキストの大文字と小文字は区別されません。検索したいテキストの指定で大文字と小文字を区別したい場合には、「-CaseSensitive」オプションを使用します。
以下の実行例では、大文字と小文字を区別し、「abc」というテキストを含むファイルを検索しています(画面3)。
コマンドレット実行例
Select-String C:\Work\*.* -Pattern abc -CaseSensitive
筆者紹介
新井 慎太朗(あらい しんたろう)
株式会社ソフィアネットワークに所属。2009年よりマイクロソフト認定トレーナーとして、Windowsを中心としたサーバおよびクライアント管理、仮想化技術に関するトレーニングを提供している。無類の猫好き。共同執筆者である国井家で飼われている猫に夢中。
Copyright © ITmedia, Inc. All Rights Reserved.