初心者にとって、findstr のようなパターン検索ツールは役に立たないように見えるかもしれません。しかし、システムによって生成されたログ ファイルや、何百行ものテキストを含むコマンド ライン出力を処理する場合は、findstr がまさに必要なツールです。
Linuxオペレーティング システムのユーザーは、 Grepコマンドの信じられないほどのユーティリティに既に精通しており、findstr はMicrosoft Windowsで同様の役割を果たします。パイプを使用して他のコマンド(other commands)と組み合わせたり、直接実行して複数のテキスト ファイルを解析したりできます。いくつかの例を使用して、findstr がどのように機能するかを見てみましょう。
Findstr コマンドの使用
基本的な構文は単純です – findstr 、 どこは検索するパターンです。は、検索するファイルのアドレスです。コマンド プロンプト(Command Prompt)を開いて、試してみてください。
findstr SFC example1.txt
このコマンドは、検索文字列SFCを含むすべての行を見つけて出力します。デフォルトでは、findstr は大文字と小文字を区別するため、SFCに関する言及は一致しないことに注意してください。
パラメーター
オプションのパラメーターを含めることで、findstr の動作をさらにカスタマイズできます。/B や /I などのスイッチは、findstr の動作を変更し、検索に追加の条件を課します。例えば:
findstr /I SFC example1.txt
パラメータとして /I を含めると、検索で大文字と小文字が区別されなくなり、大文字の使用に関係なく、用語のすべての言及が一致します。findstr のすべてのパラメーターのリストは、公式の Microsoft docs(official Microsoft docs)にあります。
オプションのパターン
findstr をカスタマイズできる方法はパラメーターだけではありません。たとえば、<string> を引用符で囲むと、複数のパターンを指定でき、テキスト文字列のいずれかが見つかった場合に一致します。
findstr “SFC DISM” example1.txt
上記は、いずれかの用語を含む一致する行を返します。これは、異なる名前のアイテムのメンションを探すときに役立ちます。
正規表現
Findstrは、複数のファイルを検索できます。変化を正規表現に追加すると、コマンドは一致するすべてのファイルで指定されたパターンを検索します。
findstr SFC *.txt
ワイルドカード文字を使用すると、正規表現が現在のディレクトリとそのサブディレクトリ内のすべてのテキスト ファイルに一致します。同様に、結果はファイル名ごとに分離されているため、どの行がどのファイルから発生したかを確認できます。
パイプ
ほとんどの cmd コマンドと同様に、findstr は他のコマンドの出力にも使用できます。ターゲット コマンドの末尾にパイプを追加して、指定なしで findstr を呼び出すだけです。(Just).
dir | findstr .txt
これにより、 dir コマンドの出力に対して findstr 検索が実行され、 .txt(.txt)で終わるファイル リストが返されます。もちろん、dir は正規表現を使用して同じタイプのファイルを既に見つけることができるため、この特定の例は実際には役に立ちません。
出力をテキスト ファイルにリダイレクトし、(redirecting the output to a text file)そのテキスト ファイルに対して findstr を使用するというより長いルートを取ることもできますが、仲介者をカットする方が簡単です。
Windows での Findstr のアプリケーション
findstr の明らかな使用法は、構文だけからすぐにわかります。特定のテキスト文字列を含むテキスト ファイルを検索したり、特定の文字列がファイルに含まれているかどうかを確認したりできます。
これは理論的には有用ですが、まれなケース以外で使用されることはめったにありません。Google Docsのようなクラウド サービスの時代に、ほとんどの人はもはや多くのテキスト ファイルを持っていません。
findstr の実際の適用はもう少し微妙で、より強力な結果を伴います。さらに興味深い例をいくつか紹介します。
特定の種類のファイルを見つける
dir コマンドには、正規表現を使用してファイル名を検索するオプションが既に含まれています。ただし、findstr を使用すると、作成日時などの他の属性を共有するファイルを検索できます。
午後(Suppose)6 時 43 分にエラーが発生し、その時点で作成されたすべてのログ ファイルを検索するとします。dir コマンドだけでは、手動で結果をふるいにかけるか、すべてのログ ファイルを取得して比較する必要があります。findstr を使用すると、これは単純なコマンドになります。
dir | findstr 06:43
同じトリックを試して、特定の日付に作成されたファイルを見つけたり、ディレクトリのリストを取得したりできます。
dir | findstr DIR
Netstat によるネットワーク(Netstat)情報(Network Information)のフィルタリング
Netstatは、コンピュータのネットワーク接続に関するすべての情報を提供する便利なWindowsコマンドです。情報が多すぎるため、findstr の出番です。
netstat の出力を findstr にパイプすると、特定のプロパティを持つ接続を検索できます。たとえば、これは確立されたすべての接続のリストを取得する方法です。
netstat | findstr ESTABLISHED
このトリックは、ネットワークの問題を診断するときに役立ちます。アプリケーションPIDで findstr を使用して、特定のプロセスによって開かれたすべての接続を見つけることもできます。
netstat -o | findstr 13120
特定の IP アドレスの取得
ipconfig コマンドを使用すると、IP アドレスを含む、システムのすべてのネットワーク インターフェイスの詳細を表示できます。findstr を使用すると、全体をスクロールしなくても、特定のタイプの IP アドレスを抽出できます。
ipconfig | findstr Temporary
このメソッドを拡張して、サブネット マスクからゲートウェイ アドレスまで、ipconfig から任意の情報を取得できます。
スクリプト ファイルの分析
どのプログラミング言語でコーディングしても、スクリプト ファイルは最終的には単なるテキストです。これは、findstr を使用してスクリプトを分析し、コード全体を精査することなく特定のセクションを取得できることを意味します。
特定のスクリプトでif(Say)ステートメントがどのように使用されているかを確認したいとします。次のコマンドを使用できます。
findstr if script.ahk
これにより、if ステートメントを使用した行が表示されるだけでなく、使用された式も表示されます。/N パラメータを含めて行番号を表示することもできます。これは、スクリプト ファイルの場合に非常に便利です。
findstr /N if script.ahk
Findstr を使う価値はありますか?
コマンド ライン インターフェイスをナビゲートする際の主な難点は、ふるいにかける必要があるテキストの量です。Findstrは、有用な情報を抽出し、ジャンクを除外するための不可欠なツールです。
すべての端末コマンドはテキストベースの出力を提供するため、常に findstr を使用して関連データを見つけることができます。ネットワークの問題のトラブルシューティング(troubleshooting network issues)から正しいファイルの検索まで、findstr を使用するとすべてのアクションがより効率的になります。
他のコマンドとの相乗効果以外でも、findstr はテキスト ファイルの内容をトラバースする機能が役立ちます。マシンで生成されたログ ファイルで特定のエラーを見つけたり、複雑なスクリプトのコードのセクションを取得したりできます。
つまり、findstr は、Windowsの上級ユーザー、特にコマンド ライン インターフェイスに慣れようとしているユーザーにとって不可欠なツールです。
Findstr: Examples and Tips Using This Handy CMD Windows Tool
For the uninitiated, a pattern searching tool like findstr may seem useless. But when dealing with system-gеnerated lоg files or command line outputs containing hundreds of lines оf text, findstr is just the toоl уou need.
Users of a Linux operating system would be already familiar with the incredible utility of the Grep command, and findstr fulfills a similar role in Microsoft Windows. You can combine it with other commands using pipes or just run it directly to parse through multiple text files. Let’s look at how findstr works with a few examples.
Using the Findstr Command
The basic syntax is simple – findstr <string> <filepath>, where <string> is the pattern to search for, and <filepath> is the address of the file to search in. Open Command Prompt and give it a try.
findstr SFC example1.txt
This command will find and output all lines containing the search string SFC. Note that by default, findstr is case-sensitive, so any mentions of SFC will not be matched.
Parameters
You can further customize how findstr works by including optional parameters. Switches like /B or /I modify the behavior of findstr, imposing additional conditions on the search. For example:
findstr /I SFC example1.txt
Including /I as a parameter makes the search case insensitive, allowing all mentions of the term to match, regardless of their capitalization. You can find the list of all parameters of findstr in the official Microsoft docs.
Optional Patterns
Parameters aren’t the only way you can customize findstr. Enclosing the <string> in quotes, for example, allows you to specify multiple patterns, giving you a match if any of the text strings are found.
findstr “SFC DISM” example1.txt
The above will return matching lines containing either of the terms. This makes it useful when looking for a mention for an item with different names.
Regular Expressions
Findstr is capable of searching through multiple files. Changing <filepath> to a regular expression makes the command look for the specified pattern in all files that match.
findstr SFC *.txt
Using the wildcard character matches the regex to all text files in the current directory and its subdirectories. The results are likewise segregated by filenames, letting you see which line originated from which file.
Pipes
Like most cmd commands, findstr can also be used on the output of other commands. Just add a pipe after the end of the target command and invoke findstr without a <filepath>.
dir | findstr .txt
This runs a findstr search on the output of the dir command, returning the file list ending with .txt. Of course, this particular example is useless in practice since dir can already locate files of the same type with a regular expression.
One can also take the longer route of redirecting the output to a text file and then using findstr on the text file, but it is easier to cut the middleman.
Applications of Findstr in Windows
The obvious uses of findstr are readily apparent from the syntax alone. You can look for text files with a specific text string or see if a particular string is contained in a file.
This, while theoretically useful, rarely sees use outside of rare cases. In the age of cloud services like Google Docs, most people no longer have many text files.
The actual applications of findstr are a bit more subtle and involve more powerful results. Here are some of the more interesting examples.
Finding Specific Types of Files
The dir command already includes the option to search for filenames using regular expressions. But with findstr, you can search for files sharing other attributes, such as the time or date of creation.
Suppose an error occurred at 06:43 PM, and you want to locate all log files created at that time. With the dir command alone, you will have to manually sift through the results or get all the log files and compare them. Using findstr, this becomes a simple command.
dir | findstr 06:43
You can try the same trick to find files created on a particular date or get a list of directories.
dir | findstr DIR
Filtering Network Information With Netstat
Netstat is a handy Windows command that gives you all the information about your computer’s network connections—too much information, which is where findstr comes in.
Piping netstat’s output into findstr lets you search for connections with specific properties. For example, this is how you can get a list of all established connections.
netstat | findstr ESTABLISHED
This trick is useful when diagnosing network issues. You can even use findstr with an application PID to find all connections opened by a particular process.
netstat -o | findstr 13120
Obtaining Specific IP Addresses
The ipconfig command lets you view details of all network interfaces of the systems, including IP addresses. You can use findstr to extract a particular type of IP address without having to scroll through the whole thing.
ipconfig | findstr Temporary
You can extend this method to obtain any information from ipconfig, from the subnet masks to gateway addresses.
Analyzing Script Files
Whichever programming language you code in, the script files are ultimately just text. This means you can use findstr to analyze scripts and retrieve specific sections without scouring through the whole code.
Say we want to see how the if statement has been used in a particular script. We can use the following command:
findstr if script.ahk
Not only will this display the lines using the if statement, but it will also show us the expressions used. You can also include the /N parameter to display the line numbers, which is very handy for script files.
findstr /N if script.ahk
Is Findstr Worth Using?
The main difficulty in navigating the command line interface is the amount of text one needs to sift through. Findstr is an essential tool for extracting useful information and filtering out junk.
Since all terminal commands give a text-based output, findstr can always be used to locate the relevant data. From troubleshooting network issues to finding the correct files, every action is made more efficient with findstr.
Even outside of its synergy with other commands, findstr is helpful for its ability to traverse the contents of text files. You can find specific errors in machine-generated log files or retrieve sections of code in a complex script.
In short, findstr is an indispensable tool in the arsenal of any advanced Windows user, especially one intending to get familiar with the command line interface.