コンテンツにスキップ

Top

Windows で grep っぽいことをしたい

Select-String を使う場合

以下のコマンドでできるが、

Get-ChildItem -Recurse | Select-String -Pattern "検索文字列"

Aliasがあるので、以下のようにできる。

ls -r | sls -pattern "検索文字列"
大文字小文字を区別したいなら、

ls -r | sls -casesensitive -pattern "検索文字列"

と -casesensitive をつける。

ファイル名で絞り込みたい場合は、

ls -r "*.txt" | sls -pattern "検索文字列"

のように ls の引数にファイル名を指定する。

なお、日本語はUTF-8じゃないといけないので注意。

findstr を使う場合

PowerShellで以下のコマンドでできる。

findstr /S /N /I "検索文字列" 検索対象ディレクトリ/*.txt
/S は配下のディレクトリも検索する。
/N は行番号を出す。
/I はignore case大文字小文字を無視)
*.txt は拡張子が.txtのを探しているが、 * 単体でも問題ない。

具体的には、

findstr /S /N /I "hoge" .\src\*.txt

で src ディレクトリ配下にある.txtファイルを全部検索して結果をだしてくれる。

が、日本語はShift_JISじゃないといけないので注意。

例えばUTF-8の日本語の文字を検索するにはなんかごちょごちょやらないといけないのでやってない。

以上。