【コマンドプロンプト】Windowsでコマンドの実行結果をGrepするコマンド


この記事はプロモーションを含みます。

Windows

ホーム > コマンドプロンプト・バッチファイル リファレンス

Linuxで良く使用されるGrepですが、Windowsにも無いのかなと調べたところ普通にありましたので記載しておきます。

テストデータ

今回は、フォルダ内に下記のファイルを用意したので、これをGrepで検索したいと思います。

C:\workspace\grep>dir /a-d /b
20210101.log
20210102.log
20210103.log
サンプルファイル_001.txt
サンプルファイル_002.txt
テスト.logファイル.txt
新しいテキスト ドキュメント.txt

ファイルに含まれる文字列で検索

ここでは、ファイルに含まれる文字列「サンプル」で検索してみます。
下のようにファイル名に「サンプル」が含まれるファイルのみ表示されました。

C:\workspace\grep>dir /a-d /b | findstr サンプル
サンプルファイル_001.txt
サンプルファイル_002.txt

ワイルドカードで拡張子が[.log]のファイルを検索

ワイルドカードを使用して、「*.log」となるファイルを検索します。
単純に「.log」で検索すると、以下のように拡張子以外に「.log」を含むファイルが表示されます。
また、Linuxのように単純に「*.log」とした場合は、ファイルが表示されません。

C:\workspace\grep>dir /a-d /b | findstr .log
20210101.log
20210102.log
20210103.log
テスト.logファイル.txt ---拡張子以外の[.log]も拾われてしまう。

C:\workspace\grep>dir /a-d /b | findstr *.log
結果が0件

なので、以下のように記述します。
拡張子が「log」となっているファイルのみ抽出できました。

C:\workspace\grep>dir /a-d /b ^| findstr /r *log
20210101.log
20210102.log
20210103.log

記事は以上です。findstrコマンドですが、オプションも多数あり、様々な使い方が出来そうなので良さげな組み合わせを見つけ次第追記していきたいと思います。

コメント

タイトルとURLをコピーしました