Windows
 Computer >> コンピューター >  >> システム >> Windows

Windows 11/10でのFINDSTRとSelect-Stringコマンドの使い方を徹底解説

FINDSTRSelect-Stringというコマンドをご存じでしょうか。Select-Stringは、入力文字列やファイル内のテキストとパターンを検索するためのコマンドレットです。Linuxにおけるgrep、WindowsにおけるFINDSTRに相当する機能を持っています。このガイドでは、Windows 11/10でFINDSTRコマンドとSelect-Stringコマンドが何であるか、そしてその使い方について詳しく解説します。

FINDSTRとは?基本的な使い方

FINDSTRは、Windows上のファイルから特定のテキストを検索するためのコマンドです。「Find String(文字列を検索する)」を短縮したものがFINDSTRという名前の由来です。特定のテキストを含むファイルを探すことにも使えます。さまざまな機能を実現するために、多数のFINDSTRコマンドが用意されています。最初はWindows 2000 Resource Kitに「qgrep」という名前で搭載されました。Windowsに標準で組み込まれているツールであり、.exe形式のファイルとして提供されています。なお、FINDSTRはUnicode形式のヌルバイト(スペースなど)を検索できないという制限があります。

コマンドプロンプトなどMicrosoftが開発したコマンドラインインタープリターでfindstrコマンドを使う際には、いくつかの基本ルールがあります。

  • 各FINDSTRコマンドには、文字列の後にファイル名を指定する必要があります。
  • FINDSTRコマンドでは、リテラル文字とメタ文字の両方を使用できます。リテラル文字とは構文上特別な意味を持たない文字で、英字や数字が該当します。一方、メタ文字はそれぞれ固有の意味を持つ記号です。以下に、構文で使用できるメタ文字とその意味をまとめます。
メタ文字意味
.ワイルドカード – 任意の1文字に一致
*繰り返し – 直前の文字またはクラスの0回以上の繰り返し
^行頭位置 – 行の先頭
$行末位置 – 行の末尾
[class]文字クラス – セット内のいずれか1文字
[^class]否定クラス – セット内にないいずれか1文字
[x-y]範囲 – 指定範囲内の任意の文字
\xエスケープ – メタ文字をリテラルとして使用
\<string語頭位置 – 単語の先頭
string\>語末位置 – 単語の末尾
  • 複数の文字列を検索したい場合は、検索条件を別々の行に記述したテキストファイルを作成しておく必要があります。
  • /cオプションを使用する場合を除き、1つのコマンドで複数の文字列を検索するときは、文字列同士をスペースで区切ります。

findstr構文のパラメータとその意味

パラメータ説明
/b行の先頭にあるテキストパターンに一致します。
/e行の末尾にあるテキストパターンに一致します。
/l検索文字列をリテラル(文字どおり)として処理します。
/r検索文字列を正規表現として処理します。これがデフォルト設定です。
/s現在のディレクトリとすべてのサブディレクトリを検索します。
/i文字列の検索時に大文字・小文字を区別しません。
/x完全に一致する行を出力します。
/v一致しない行のみを出力します。
/n一致した各行の行番号を出力します。
/m一致するファイルがある場合、ファイル名のみを出力します。
/o一致する各行の前に文字オフセットを出力します。
/p印刷不可能な文字を含むファイルをスキップします。
/off[line]オフライン属性が設定されたファイルをスキップしません。
/f:<file>指定したファイルからファイル一覧を取得します。
/c:<string>指定したテキストをリテラル検索文字列として使用します。
/g:<file>指定したファイルから検索文字列を取得します。
/d:<dirlist>指定したディレクトリ一覧を検索します。各ディレクトリはセミコロン(;)で区切る必要があります(例:dir1;dir2;dir3)。
/a:<colorattribute>色属性を2桁の16進数で指定します。詳細についてはcolor /?と入力してください。
<string>filename内で検索するテキストを指定します。必須項目です。
[\<drive>:][<path>]<filename>[…]検索対象の場所とファイルを指定します。少なくとも1つのファイル名が必要です。
/?コマンドプロンプトにヘルプを表示します。

findstrコマンドの実用例

1. ファイルx.yから「microsoft」または「windows」という単語を検索する場合:

findstr microsoft windows x.y

2. ファイルx.yから「microsoft windows」というフレーズを検索する場合:

findstr /c:"microsoft windows" x.y

上記のコマンドでは、/cオプションにより、指定したテキスト「microsoft windows」を1つの文字列として検索しています。

3. テキストファイルtwc.txtから、大文字のMで始まる「Microsoft」という単語の出現箇所を検索する場合:

findstr Microsoft twc.txt

4. 大文字・小文字を区別せずに、特定のディレクトリとそのサブディレクトリから「Microsoft」という単語を検索する場合:

findstr /s /i Microsoft *.*

上記の構文では、/sが現在のディレクトリとサブディレクトリの検索を、/iが大文字・小文字(Mの部分)の無視を意味します。

5. 複数のスペースの後に「To」で始まる行を検索し、その行番号を表示したい場合:

findstr /b /n /r /c:^ *To *.bas

6. stringlist.txtに検索条件、filelist.txtにファイル一覧を保存し、複数の文字列を複数のファイルから検索して結果をresult.outに保存したい場合:

findstr /g:stringlist.txt /f:filelist.txt > results.out

7. 特定のディレクトリとそのサブディレクトリから、「thewindowsclub」という単語を含むファイルを検索する場合:

findstr /s /i /m \<thewindowsclub\> *.*

8. 「thewindowsclub」のほかに、「thesis」「thermometer」など「the」で始まる単語を含むファイルを検索する場合:

findstr /s /i /m \<the.* *.*

以上が、コマンドプロンプトなどのコマンドラインインタープリターでfindstrコマンドを使用する方法です。日常的にfindstrコマンドを使いこなすには、各パラメータの機能やメタ文字の意味を理解し、適切な構文を書けるようになることが重要です。

Select-Stringとは?主なパラメータ

PowerShellで大量のコードを書いているうちに、特定の文字列やテキストを見失ってしまったことはありませんか。何千行ものコードの中から目的の文字列を探し出すのは大変です。そこで役立つのがSelect-Stringコマンドです。PowerShellの入力ファイル内の文字列やテキストを検索でき、Linuxのgrepとよく似た働きをします。

Select-Stringは、入力文字列やファイル内のテキストおよびパターンを検索するコマンドレットです。LinuxのgrepやWindowsのFINDSTRに相当します。Select-Stringでテキストを検索すると、各行の最初の一致箇所を見つけ、ファイル名、行番号、一致した行全体を表示します。1行あたり複数の一致を検出したり、一致箇所の前後のテキストを表示したり、True/Falseなどのブール値で結果を取得することも可能です。また、コマンドで指定した式に一致しないテキストだけを表示することもできます。FINDSTRで使えるワイルドカードはSelect-Stringでも利用できます。さらに、Select-StringはASCIIやUnicodeなど異なるファイルエンコーディングにも対応しており、バイト順マーク(BOM)を使ってファイルのエンコーディングを判定します。BOMがない場合はUTF8として扱われます。

Select-Stringのパラメータ一覧

Microsoftが提供している主なパラメータは以下のとおりです。

  • -AllMatches: 通常は各行の最初の一致のみを検出しますが、このパラメータを指定すると行内のすべての一致を検索します。
  • -CaseSensitive: 大文字・小文字を区別して一致させます。デフォルトでは大文字・小文字は区別されません。
  • -Context: 一致した行の前後に指定した行数分のテキストをキャプチャします。1を指定すると、前後1行ずつ取得します。
  • -Culture: ordinalやinvariantなど、コーディングにおけるカルチャを指定します。
  • -Encoding: ASCII、UTF8、UTF7、Unicodeなど、ファイル内テキストのエンコード形式を指定します。
  • -Exclude: ファイル内の特定のテキストを除外します。
  • -Include: ファイル内の特定のテキストを含めます。
  • -InputObject: 検索対象のテキストを指定します。
  • -List: テキストに一致するファイルの一覧を取得します。
  • -LiteralPath: 検索対象のパスを指定します。
  • -NoEmphasis: 通常Select-Stringは一致箇所をハイライト表示しますが、このパラメータでハイライトを無効にできます。
  • -NotMatch: 指定したパターンに一致しないテキストを検索します。
  • -Path: ワイルドカードと併用して、検索対象のパスを指定します。
  • -Pattern: 各行で一致を検索するパターンを指定します。
  • -Quiet: True/Falseなどのブール値で結果を取得します。
  • -Raw: MatchInfoではなく、一致したオブジェクトのみを表示します。
  • -SimpleMatch: 正規表現による一致ではなく、単純な一致を指定します。

FINDSTRとSelect-Stringの違い

FINDSTRはPowerShell登場以前から存在する実行ファイルで、ファイル内のテキストや文字列を検索するために使われます。一方、Select-StringはPowerShellのコマンドレットで、ファイル内のテキストやパターンを検索します。FINDSTRと比較すると、Select-Stringの方が強力かつ高機能で、一致に関する多くの情報を表示できます。

PowerShell版grepに相当するのは?

Windowsで利用できるgrepのPowerShell版に相当するのがSelect-Stringです。grepと同じように動作し、構文で指定したパラメータに応じて一致に関する詳細な情報を提供します。

FINDSTRはWordファイルでも使える?

はい、FINDSTRはWordファイルに対しても動作します。ただし、入力した文字列がファイル内に存在していても、一致箇所を正しく表示できないことがあります。.doc形式のバイナリファイルでは結果を得られますが、技術的な理由により.docx形式では期待どおりの結果にならない場合があります。

関連記事: WindowsでPowerShellのバージョンを確認する方法もぜひご覧ください。

  1. Windows 11/10でペイントを開く・使う方法【初心者向けガイド】

    Microsoftペイントは、Windows 11/10に標準搭載されている重要なアプリケーションで、ペイントのキャンバス上にさまざまな画像を作成・描画するために使用されます。ペイントアプリには、多彩なツール、さまざまな種類のブラシ、図形、豊富なカラーパレットが用意されており、画像の描画や編集が自由に行えます。さらに、Webから画像をダウンロードしてペイントのキャンバスに貼り付け、思い通りの形に編集することも可能です。 Windows 11/10でMicrosoftペイントを使用する方法 ペイントアプリを開くには、スタートボタン > Windows アクセサリ > ペイント の順に

  2. Windows 11/10のメールアプリの使い方完全ガイド|アカウント追加から署名・通知設定まで

    MicrosoftはWindows 11/10のメールアプリに対して数多くの改良を重ねてきました。かつての平凡なアプリから、非常に使い勝手の良いアプリへと進化を遂げています。本記事では、新機能の紹介をはじめ、新しいメールアカウントの作成・追加方法、署名の作成、メールの送受信方法などを詳しく解説します。 メールアプリは、Web版やOffice版のOutlookを簡略化したアプリです。メールの確認や差出人への返信に必要な基本機能はすべて備えているため、ほとんどのユーザーにとって十分な仕上がりといえます。ただし、より高度な機能を求める上級者には、物足りなく感じられるかもしれません。 Windows