findstrコマンドをマスターしよう:Windowsコマンドラインのプロの技と実用例
初めての方にとって、findstrのようなパターン検索ツールは何の役に立つのかピンとこないかもしれません。しかし、システムが生成するログファイルや、数百行に及ぶコマンドラインの出力を扱うとき、findstrこそが頼れる相棒になります。
Linuxユーザーなら、grepコマンドの強力さはすでにご存じでしょう。findstrはMicrosoft Windowsにおいてそれと同じ役割を果たすツールです。パイプを使って他のコマンドと組み合わせることもできれば、単体で複数のテキストファイルを解析することも可能です。ここでは、いくつかの例を通じてfindstrの使い方を見ていきましょう。
findstrコマンドの基本的な使い方
基本構文はシンプルです。「findstr <文字列> <ファイルパス>」という形式で、<文字列>には検索したいパターンを、<ファイルパス>には検索対象ファイルの場所を指定します。コマンドプロンプトを開いて、早速試してみましょう。
findstr SFC example1.txt
このコマンドを実行すると、検索文字列「SFC」を含むすべての行が検索されて出力されます。なお、findstrはデフォルトで大文字・小文字を区別するため、小文字の「sfc」などの表記は一致しない点に注意してください。
パラメータ(オプション)による動作のカスタマイズ
省略可能なパラメータを追加すると、findstrの動作をさらに細かくカスタマイズできます。/B や /I といったスイッチは、検索に追加の条件を課すものです。例えば次のように使います。
findstr /I SFC example1.txt
/I を指定すると大文字・小文字を区別しない検索になり、表記ゆれがあってもすべて一致するようになります。findstrの全パラメータの一覧は、Microsoft公式ドキュメントで確認できます。
複数パターンを指定した検索
カスタマイズ方法はパラメータだけではありません。<文字列>を引用符で囲むと、複数のパターンを一度に指定でき、いずれかの文字列が見つかった行がすべて一致として返されます。
findstr "SFC DISM" example1.txt
上記のコマンドは、どちらかの語を含む行をすべて返します。同じ項目が異なる名前で呼ばれている場合などを探すときに便利です。
正規表現で複数ファイルを検索
findstrは複数のファイルをまとめて検索することもできます。<ファイルパス>の部分に正規表現を指定すれば、条件に合致するすべてのファイルの中からパターンを探し出します。
findstr SFC *.txt
ワイルドカードを使うと、カレントディレクトリとそのサブディレクトリ内のすべてのテキストファイルが検索対象になります。結果もファイル名ごとに整理して表示されるため、どの行がどのファイル由来なのかひと目でわかります。
パイプとの組み合わせ
ほとんどのcmdコマンドと同様に、findstrは他のコマンドの出力に対しても使えます。対象コマンドの末尾にパイプ(|)を付け、<ファイルパス>なしでfindstrを呼び出すだけです。
dir | findstr .txt
これはdirコマンドの出力に対してfindstr検索を行い、拡張子が.txtのファイル一覧を返します。もちろん、この例自体はdirが正規表現で同じ種類のファイルを絞り込めるため、実用性はほとんどありません。
出力をいったんテキストファイルにリダイレクトしてからfindstrにかけるという遠回りな方法もありますが、中継を省いた方が手間がかかりません。
Windowsでのfindstrの実践的な活用例
構文を見れば、findstrの基本的な用途はおのずとわかります。特定の文字列を含むテキストファイルを探したり、ある文字列がファイル内に存在するかどうかを確認したりできるのです。
理論上は有用ですが、実際にこうした使い方がされることはまれです。Googleドキュメントのようなクラウドサービスの時代、テキストファイルを大量にローカルに持っている人は少なくなりました。
findstrの真価は、もう少し地味でありながら強力な応用の中にあります。ここからは、特に興味深い活用例をいくつか紹介します。
特定の種類のファイルを見つける
dirコマンドにも正規表現でファイル名を検索する機能はあります。しかしfindstrなら、作成日時など他の属性を共有するファイルを検索できます。
たとえば、午後6時43分にエラーが発生し、その時刻に作成されたログファイルをすべて特定したいとしましょう。dirコマンドだけでは、結果を手作業でふるいにかけるか、ログファイルを全部取得して比較するしかありません。findstrを使えば、これはたった1つのコマンドで済みます。
dir | findstr 06:43
同じ要領で、特定の日付に作成されたファイルを探したり、ディレクトリだけの一覧を取得したりすることもできます。
dir | findstr DIR
netstatでネットワーク情報を絞り込む
netstatは、コンピューターのネットワーク接続に関するあらゆる情報を表示してくれる便利なWindowsコマンドです。ただし情報量が多すぎるのが難点で、そこでfindstrの出番です。
netstatの出力をfindstrにパイプで渡せば、特定の性質を持つ接続だけを検索できます。たとえば、確立済み(ESTABLISHED)の接続一覧は次のように取得します。
netstat | findstr ESTABLISHED
このテクニックはネットワーク障害の診断に役立ちます。さらに、アプリケーションのPIDを指定すれば、特定のプロセスが開いている接続をすべて見つけることも可能です。
netstat -o | findstr 13120
特定のIPアドレスを取得する
ipconfigコマンドを使うと、システムの全ネットワークインターフェースの詳細(IPアドレスを含む)を確認できます。findstrを組み合わせれば、画面全体をスクロールせずとも、必要な種類のIPアドレスだけを抽出できます。
ipconfig | findstr Temporary
この手法は応用範囲が広く、サブネットマスクからゲートウェイアドレスまで、ipconfigが出力する任意の情報を取り出せます。
スクリプトファイルの解析
どんなプログラミング言語で書いても、スクリプトファイルの実態はただのテキストです。つまりfindstrを使えば、コード全体を読み通すことなく、スクリプトを解析して目的の部分だけを取り出せます。
たとえば、あるスクリプト内でif文がどのように使われているか確認したいとします。次のコマンドを実行しましょう。
findstr if script.ahk
これにより、if文を使用している行だけでなく、その式の内容まで表示されます。/N パラメータを追加すると行番号も表示され、スクリプトファイルを扱う際に非常に便利です。
findstr /N if script.ahk
findstrは使う価値があるのか?
コマンドラインインターフェース操作の最大の難所は、目を通すべきテキスト量の多さにあります。findstrは、有用な情報を抽出し、不要なノイズを除去するための不可欠なツールです。
ターミナルコマンドの出力はすべてテキストベースなので、findstrさえあれば関連データを必ず見つけられます。ネットワークトラブルの切り分けから目的のファイルの探索まで、あらゆる操作がfindstrによって効率化されます。
他のコマンドとの連携を離れても、findstrにはテキストファイルの中身を横断的に調べる能力があり、それ自体が大きな価値です。機械生成のログファイルから特定のエラーを探したり、複雑なスクリプトから該当箇所のコードを取り出したりできます。
要するに、findstrは上級Windowsユーザーの武器庫に欠かせない道具であり、特にコマンドラインインターフェースに慣れ親しみたい人にとっては必須の存在だと言えるでしょう。
-
Microsoft Teamsの無料版と有料版を徹底比較!主な違いとメリット
近年、ビデオ会議アプリは職場に欠かせないツールとなりました。Microsoft Teamsはその中でも代表的なアプリの一つで、機能や性能が異なる無料版と有料版を提供しています。Teamsの利用を検討している方の中には、「有料サブスクリプションは本当に価値があるのか?」と疑問に思っている方も多いのではないでしょうか。この記事では、Microsoft Teamsの無料版と有料版の違いを詳しく解説します。Microsoft Teams 無料版と有料版の比較有料版が自分にとって有益かどうかは、アプリの用途によって異なります。以下で、無料版と有料版それぞれの特徴を項目別に詳しく見ていきましょう。ビデオ通
-
Apple TV 4Kを使いこなす!知っておきたい10のヒントとコツ
新しいApple TVをお買い上げになりましたか?それならこの記事は必見です。初代Apple TVの登場から久しく経ちますが、技術の進化とともに、後継モデルごとに大きくパワーアップしてきました。その最新作が「Apple TV 4K」です。Apple TV 4Kは、エンターテインメントシステムに大きな付加価値をもたらす非常に便利なガジェットです。ニュース、天気、2種類のストレージオプションなど、実用的な機能が豊富に搭載された、コンパクトで効率的なデバイスです。一見してわかる機能も多い一方で、ユーザーがまだ知らない隠れた機能も数多く存在します。この記事では、Apple TV 4Kをさらに快適に、そ