【PowerShell】テキストファイル内の文字列を検索する方法

Windows環境で便利なテキストエディタが使えないときに、 PowerShellでテキスト検索する方法。


検索①:指定したフォルダ(サブフォルダを含まない)内のテキストを検索

✏スクリプト

$TargetPath="C:\TEMP\*.txt";
$ScanPhrase="hoge";
Select-String -Path $TargetPath -Pattern $ScanPhrase -Encoding default


☝スクリプトの説明

♦1行目:

  $TargetPath="C:\TEMP\*.txt";
検索対象のファイルパス(C:\TEMP\*.txt)を指定。


♦2行目:

  $ScanPhrase="hoge";
検索する文字列を指定。ここでは文字列 "hoge" を検索。


♦3行目:

  Select-String -Path $TargetPath -Pattern $ScanPhrase -Encoding default
検索対象のファイル(C:\TEMP\*.txt)のうち、文字列 "hoge"を含むファイルを検索。
「-Encoding default」は日本語環境であれば「Shift-JIS」を読み込む。「UTF8」であれば「-Encoding UTF8」




検索②:サブフォルダを含む特定フォルダ内のテキスト検索

スクリプト

$TargetPath="C:\TEMP";
$TargetFile="*.txt";
$ScanPhrase="hoge";
dir $TargetPath -Recurse -Filter $TargetFile | Select-String -Pattern $ScanPhrase -Encoding default

☝スクリプトの説明

♦1行目:

  $TargetPath="C:\TEMP";
検索対象のフォルダ(C:\TEMP)と、検索対象のファイル(*.txt)を指定。

♦2行目:

  $TargetFile="*.txt";
検索対象のファイル名称の条件を指定。ここでは拡張子.txt のファイルを検索対象のファイルと指定。

♦3行目:

  $ScanPhrase="hoge";
検索する文字列を指定。ここでは文字列 "hoge" を検索。

♦4行目:

  dir $TargetPath -Recurse -Filter $TargetFile | Select-String -Pattern $ScanPhrase -Encoding default
パイプラインで処理を結合。
① 「dir $TargetPath -Recurse -Filter $TargetFile」で、「C:\TEMP」配下のサブフォルダを含むフォルダ内にある、ファイル名が「*.txt」となるファイルの一覧を取得。
② ①で検索したファイル内に "hoge" を含むテキストを検索。



コメント

このブログの人気の投稿

【論文メモ】A systematic literature review on source code similarity measurement and clone detection: techniques, applications, and challenges

【論文メモ】<2022>コードクローン検索手法の調査

【論文】A Survey on Causal Inference<2021>