無能が苦悩したメモ

無能な著者が学んだことを忘れないための覚え書きです...

Powershell:ファイル内の文字列を検索する

linuxだとgrepコマンドを使えば文字列検索できますが、PowerShellだどうするのか知らなかったのでメモです。どうやらSelect-Stringという命令(PowerShellではコマンドレットと呼ぶ)でできそうです。

試しにtest1.txtというファイルを用意して、「あああ」という文字を検索してみました。が検索ヒットせず…

PS C:\test> Get-Content .\test1.txt
あああ
かかか
さささ
たたた
ななな
PS C:\test>
PS C:\test> Select-String "あああ" .\test1.txt
PS C:\test>

どうやら日本語の場合は以下のようにEncodingでdefaultを指定しなければならないようです。指定したところ想定通り結果が得られました。

PS C:\test> Select-String "あああ" .\test1.txt -Encoding default
test1.txt:1:あああ


PS C:\test>


以下のようにすればカレントフォルダ以下のすべてのtxtファイルを検索できます。

PS C:\test> ls *.txt -Recurse -Force | Select-String "あああ"  -Encoding default