PowerShellで検索/grep/findする方法!Select-String 複数テキストファイルも対応可!

powershell

PowerShellを使って、テキストやログファイル内の特定の文字列を検索したいことはありませんか?

けど、そんな中で悩むことは、

  • UNIXの grep コマンドのように使えるPowerShellの検索方法がわからない
  • 指定フォルダ内の複数ファイルを一括で検索したい
  • 正規表現を使って高度な検索をしたい

ですよね。

今回はそんなお悩みを解決する

  • Select-String コマンドの基本的な使い方
  • 複数ファイルを検索する方法
  • 正規表現を活用した検索方法

についてまとめます!

PowerShellの検索機能 完成イメージ

PowerShellの Select-String コマンドを使うことで、以下のようなことが可能になります。

POINT
  • 指定した文字列を含む行をファイルから検索
  • 指定フォルダ内の全ファイルを対象に検索
  • 正規表現を使った高度な検索
  • 検索結果の表示や出力のカスタマイズ
それでは、具体的な方法を解説していきます。

PowerShellで検索する方法

基本的な文字列検索 (Select-String)

構文:

Select-String -Path "ファイルパス" -Pattern "検索文字列"

入力例:

Select-String -Path "C:\Logs\logfile.txt" -Pattern "error"

出力例:

logfile.txt:12: [ERROR] Something went wrong.
logfile.txt:45: [ERROR] Connection failed.

解説:

  • -Path
    検索対象のファイルを指定
  • -Pattern
    検索する文字列(大文字・小文字を区別しない)

複数ファイルを一括検索

特定フォルダ内のすべての .log ファイルを検索する場合は以下のようになります。

Select-String -Path "C:\Logs\*.log" -Pattern "error"

出力例:

log1.log:12: [ERROR] Something went wrong.
log2.log:22: [ERROR] Timeout occurred.
log3.log:35: [ERROR] Disk full.

解説:

  • *.log
    指定した拡張子のファイルを対象にする
  • -Path にフォルダごと指定すれば、複数ファイルを検索可能

サブフォルダを含めて検索

サブフォルダ内のすべての .log ファイルも検索する場合:

Select-String -Path "C:\Logs\*.log" -Pattern "error" -Recurse

-Recurse を指定することで、フォルダ内のすべてのサブフォルダも検索対象になります。

正規表現を使った検索

Select-String は正規表現に対応しているため、より高度な検索が可能です。

特定のパターンを検索

例: 「error」または「failed」を含む行を検索

Select-String -Path "C:\Logs\*.log" -Pattern "error|failed"

特定のフォーマットを検索(例: IPアドレス)

Select-String -Path "C:\Logs\*.log" -Pattern "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"

この例では、IPアドレス(例: 192.168.1.1)を検索できます。

検索結果を抽出・保存する

検索結果をテキストファイルに保存する場合は以下のようになります。

Select-String -Path "C:\Logs\*.log" -Pattern "error" | Out-File "C:\Logs\error_log.txt"

また、検索結果を変数に保存して処理することも可能です。

$results = Select-String -Path "C:\Logs\*.log" -Pattern "error"
$results | ForEach-Object { $_.Line }

これにより、検索にヒットした行だけを取得できます。

さいごに

いかがでしょうか。

今回は、

  • PowerShell の Select-String を使った検索方法
  • 複数ファイルの検索
  • サブフォルダ内の検索
  • 正規表現を活用した高度な検索
  • 検索結果の保存や加工

についてまとめました。

PowerShellを活用すれば、Windows環境でもUNIXの grep のような検索機能を実現できます。ぜひ試してみてください!



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA ImageChange Image