今回のテーマは「あるフォルダ内の複数のテキストデータ(.txtなど)について、その中身を開かずに特定の単語・キーワードを検索する方法」について記載します。
(0)目次&概説
(1) Windowsの場合
(1-1) コマンド
(1-2) 使用例
(1-3) 解説
(1-4) TXT以外の形式も含めて検索する場合
(2) Linuxの場合
(2-1) コマンド
(2-2) 使用例
(2-3) 解説
(1) Windowsの場合
(1-1) コマンド
findstr /S /N "[探索文字列]" * //結果をテキストに出力したい場合 findstr /S /N "[探索文字列]" * > Search.txt
(1-2) 使用例
例えば、次のディレクトリ構造のテストデータ(.txtと.xmlの混合)を考えます。
C:. │ Test1.txt │ Test2.txt │ Test3.xml │ └─Test4 Test4.txt
(図1)テストデータのフォルダ構造
各テキストファイルの中身は下記の通りです。
(図2)テストデータの中身
このデータに対して上記のコマンドで単語「aaa」を検索します。
(図3)Windows検索結果
(1-3) 解説
コマンドの解説です。
findstr | テキスト形式のファイル群から文字列を検索できます。 |
/S | サブフォルダも含めて検索します |
/N | 行番号を表示します |
“[検索文字列]” | 検索したい文字列を入力します |
* | 「*」は配下の全てのファイルの意味します。 |
「*」について、特定のファイルのみを対象としたい場合は「*.txt」や「*.xml」や「Test.*」といった記載で前方一致や後方一致で対象を絞ることも可能です。
(1-4) TXT以外の形式も含めて検索する場合
上記の手法では拡張子「.xlsx」や「.pdf」のファイルに対して上手く検索が出来ませんが、「さくらエディタ」などのテキストエディタに付属のgrep機能を使えば、pdf形式も含めて検索ができます。
<手順>
①サクラエディタを開きます
②メニューの「検索」→「Grep」を選択します。
③検索文字(条件)と検索する拡張子種別(ファイル)と探索パス(フォルダ)を指定する
④「検索」を押下
(図4)サクラエディタのGrep
(2) Linuxの場合
(2-1) コマンド
grep -rn "[検索文字列]" ./*
(2-2) 使用例
Windowsの例と全く同じ構造・中身のデータを作成します。
│ Test1.txt │ Test2.txt │ Test3.xml │ └─Test4 Test4.txt
(図5)テストデータのフォルダ構造
このデータに対して、同じく単語「aaa」を検索します。
(図6)Linux検索結果
(2-3) 解説
コマンドの解説です。
grep | ファイル群の中から正規表現を利用して文字列を抽出できます |
-r | サブディレクトリも含めて検索する |
-n | 検索対象が出現する行数を表示 |
./* | 「./*」はカレントディレクトリ配下の全てのファイルを意味します |