Linuxで複数ファイル内のテキストを検索する方法

クイック回答

コマンドライン検索: grep または ripgrep を使用して、プレーンテキスト、コード、ログ、設定ファイルを検索します。
グラフィカルな文書検索: 文書検索ツールを使用して、PDF、Word、LibreOffice、Excel、その他のファイル内をプレビュー付きで検索します。

 

Linuxで複数のファイルからテキストを検索する方法には、大きく分けて2つあります。ターミナルからプレーンテキストファイルを検索する方法と、PDF、Word、LibreOffice、Excelファイルなどの実際の文書内を検索する方法です。

 

まず以下の表を使って適切な方法を選び、該当するセクションに進んでください。

 

 

どのLinux検索方法を使用すべきですか?

 

最適な方法は、主に検索するファイルの種類によって異なります。

 

タスク 最適な選択肢
プレーンテキスト、ソースコード、ログ、設定ファイルを検索する grep
ターミナルからフォルダーとすべてのサブフォルダーを検索する grep -R
コードプロジェクトをすばやく検索する ripgrep
PDF、Word、LibreOffice、Excel、その他の文書内を検索する SeekFast
無料のオープンソース型インデックス文書検索ツールを使用する RecollまたはDocFetcher
ターミナルからPDFファイルのみを検索する pdfgrep

 

重要な制約は、一般的なコマンドラインツールは通常プレーンテキストを読み取るという点です。技術系ファイルの検索には非常に優れていますが、複雑な文書形式の内部を確実に検索できるわけではありません。そのため、文書でいっぱいのフォルダーに適した方法は、ログやコードでいっぱいのフォルダーに適した方法とは異なります。

 

 

grepでプレーンテキストファイルを検索する

 

grepは、ファイル内のテキストを検索するための標準的なLinuxコマンドです。プレーンテキスト、ソースコード、ログ、CSVファイル、Markdownファイル、設定ファイルの検索に最適です。

 

1つのファイル内で単語を検索するには、次を使用します。

 

grep "error" server.log

 

現在のフォルダー内にあるすべてのファイルを検索するには、次を使用します。

 

grep "error" *

 

フォルダーとそのすべてのサブフォルダーを検索するには、再帰検索を使用します。

 

grep -R "error" /path/to/folder

 

実際には、結果を使いやすくするため、通常は行番号とファイル名を表示するオプションを追加します。

 

grep -RIn "error" /path/to/folder

 

各オプションの意味は次のとおりです。

 

  • -Rはフォルダーを再帰的に検索します。
  • -Iはバイナリファイルをスキップします。
  • -nは行番号を表示します。

 

Search text in multiple Linux files with grep

 

大文字と小文字を区別しない検索

 

大文字と小文字の違いを無視するには、-iを追加します。

 

grep -RIn -i "invoice" ~/Documents

 

これにより、"invoice"、"Invoice"、"INVOICE"を検索できます。

 

単語全体のみを検索する

 

単語全体に一致させるには、-wを追加します。

 

grep -RIn -w "cat" ~/notes

 

これにより、"category"のような長い単語の一部に一致するのを防げます。

 

特定のファイル形式のみを検索する

 

特定の拡張子を持つファイルのみを検索するには、--includeを使用します。

 

grep -RIn --include="*.txt" "budget" ~/Documents

 

複数の拡張子を指定する場合は、このオプションを繰り返します。

 

grep -RIn --include="*.txt" --include="*.md" --include="*.log" "budget" ~/Documents

 

これは、多くのファイル形式を含むフォルダーから、テキストベースのファイルだけを検索したい場合に便利です。

 

検索からフォルダーを除外する

 

大きなフォルダーには、.gitnode_modulesvendor、バックアップなど、検索する必要のないディレクトリが含まれていることがよくあります。次のようにして除外できます。

 

grep -RIn --exclude-dir=".git" --exclude-dir="node_modules" "error" ~/project

 

これにより結果が見やすくなり、検索速度も大幅に向上する可能性があります。

 

完全一致するフレーズや複数の単語を検索する

 

完全一致するフレーズを検索するには、そのフレーズを引用符で囲みます。

 

grep -RIn "payment failed" ~/logs

 

いずれかの単語を検索するには、-Eを指定して拡張正規表現を使用します。

 

grep -RInE "error|failed|timeout" ~/logs

 

これは重要なポイントです。-Eを指定しない場合、基本的なgrep構文では縦線が通常の選択演算子として扱われません。

 

grepだけでは不十分な場合

 

grepは強力ですが、あくまでプレーンテキスト検索ツールです。通常は、読み取り可能なテキストとして保存されているファイルに適しています。Word文書、Excelスプレッドシート、LibreOfficeファイル、PDF、電子書籍、その他の文書形式を検索するための汎用的なソリューションではありません。

 

さまざまな文書が入ったフォルダーにgrepを使用すると、重要な一致を見逃したり、判読できない出力が表示されたりすることがよくあります。そのような場合は、文書検索ツールのセクションに進んでください。

 

 

ripgrepでコマンドライン検索を高速化する

 

ripgrepは通常rgとして実行される、最新のコマンドライン検索ツールです。デフォルトでディレクトリを再帰的に検索し、大規模なコードフォルダーでは通常grepより高速であるため、特に開発者に人気があります。

 

現在のフォルダーとそのサブフォルダーを検索するには、次を使用します。

 

rg "error"

 

特定のフォルダーを検索するには、次を使用します。

 

rg "error" ~/project

 

特定のファイル形式のみを検索するには、次を使用します。

 

rg "error" -g "*.log" ~/logs

 

ripgrepはデフォルトで.gitignoreも考慮します。生成されたファイルや無関係なファイルの多くを自動的にスキップするため、ソースコードプロジェクトで便利です。

 

コード、ログ、Markdown、設定ファイル、その他のプレーンテキストを検索する場合は、ripgrepを使用してください。PDF、Word、LibreOffice、Excel、その他の文書には、代わりに文書検索ツールを使用します。

 

 

Ubuntu、Mint、Fedora、Debian、その他のLinuxディストリビューションでファイルを検索する

 

検索コマンドは、ほとんどのLinuxディストリビューションでほぼ同じです。grepは通常デフォルトでインストールされており、主な違いはripgrep、Recoll、デスクトップ用文書検索アプリなどの追加ツールをインストールする方法です。

 

 

Ubuntuでファイルを検索するにはどうすればよいですか?

 

Ubuntuでは、すぐにgrepを使用できます。

 

grep -RIn "text" ~/Documents

 

テキストやコードのフォルダーを高速に再帰検索するためにripgrepをインストールするには、次を使用します。

 

sudo apt install ripgrep

 

PDF、Word、LibreOffice、Excel、その他のファイル内を検索するには、グラフィカルな文書検索ツールを使用してください。Ubuntuでは`.deb`パッケージを使用するため、SeekFastなどのデスクトップ検索ソフトウェアをインストールする際は、Debian/Ubuntu向けのダウンロードを選択してください。

 

 

Linux Mintでファイルを検索するにはどうすればよいですか?

 

Linux MintはUbuntuをベースとしているため、通常は同じコマンドを使用できます。grepでプレーンテキストファイルを検索できます。

 

grep -RIn "text" ~/Documents

 

また、次のコマンドでripgrepをインストールできます。

 

sudo apt install ripgrep

 

WindowsからMintに移行したユーザーにとって、特にフォルダーにPDF、DOCX、ODT、XLSX、その他のオフィス文書が含まれている場合は、ターミナルコマンドよりもグラフィカルな文書検索ツールのほうが直感的に感じられるでしょう。

 

 

Fedoraでファイルを検索するにはどうすればよいですか?

 

Fedoraにもgrepが含まれているため、基本的な再帰コマンドは同じです。

 

grep -RIn "text" ~/Documents

 

Fedoraにripgrepをインストールするには、次を使用します。

 

sudo dnf install ripgrep

 

グラフィカルな文書検索ツールについては、利用可能な場合、Fedoraユーザーは通常`.rpm`パッケージを使用する必要があります。

 

 

Debian、openSUSE、Arch、その他のディストリビューションの場合は?

 

検索方法の考え方は同じです。プレーンテキストファイルにはgrep、高速なコマンドライン検索にはripgrep、PDF、Word、LibreOffice、Excel、およびさまざまなファイル形式が混在するフォルダーには文書検索ツールを使用します。

 

インストールコマンドはディストリビューションによって異なります。

 

  • Debian: sudo apt install ripgrepと`.deb`パッケージを使用します。
  • openSUSE: sudo zypper install ripgrepとRPMパッケージを使用します。
  • Arch: sudo pacman -S ripgrepを使用します。

 

あまり一般的でないディストリビューションを使用している場合は、目的のツールがネイティブパッケージ、AppImage、Snap、Flatpak、またはその他の対応形式で提供されているか確認してください。

 

 

PDF、Word、LibreOffice、その他の文書内を検索する

 

多くの人がLinuxでテキストを検索する理由は、プレーンテキストファイルだけでなく、実際の文書内から情報を見つける必要があるためです。このような場合、コマンドラインツールはかなり使いにくくなります。

 

文書フォルダーには、PDF、DOCX、ODT、ODS、XLSX、CSV、HTML、TXT、EPUB、その他多くの形式が含まれる可能性があります。テキストを直接保存するファイルもあれば、圧縮XML、バイナリ構造、PDFオブジェクト内にテキストを保存するファイルもあります。通常のgrep検索は、これらすべてを確実に処理できるようには設計されていません。

 

文書フォルダーを検索する場合は、まずファイル形式について考えてください。PDF内、DOCXファイル内、LibreOffice Writerファイル内、複数形式が混在するフォルダー内の検索は、それぞれ少し異なる作業です。

 

 

LinuxでPDFファイル内を検索する

 

LinuxでPDFファイル内を検索する必要がある場合、最初に確認すべきなのは、PDFに実際に選択可能なテキストが含まれているかどうかです。含まれている場合は、pdfgrepなどのツールを使用してターミナルから検索できます。

 

基本的な再帰pdfgrepコマンドは次のようになります。

 

pdfgrep -RIn "invoice" ~/Documents

 

これはテキストベースのPDFには適していますが、すべてのPDFに対応できるわけではありません。スキャンされたPDFは、検索可能なテキストではなくページ画像を保存しているため、通常は先にOCR処理が必要です。フォルダーにPDFのほか、Word、LibreOffice、Excel、その他の文書が含まれている場合は、形式ごとに別のコマンドを使用するより、文書検索ツールを使用するほうが通常は便利です。

 

 

LinuxでDOCXファイル内を検索する

 

DOCXファイルはプレーンテキストファイルではありません。厳密には、DOCXファイルはXMLやその他の内部ファイルを含む圧縮パッケージです。そのため、通常のgrepはDOCX文書内を検索するための簡潔で信頼できる方法ではありません。

 

DOCXファイルを展開したり、最初にテキストへ変換したりする技術的な回避策はありますが、日常的な使用には不便です。LinuxデスクトップでDOCXファイルを検索する必要がある場合は、通常、文書形式を理解し、一致したテキストを文脈とともに表示できるツールを使用するほうが適しています。

 

 

LibreOffice Writerファイル内のテキストを検索する

 

LibreOffice Writerファイルでは通常ODT形式が使用されます。DOCXと同様、ODTは単純なプレーンテキストファイルではないため、通常のWriter文書検索にgrepは適していません。

 

開いている文書が1つだけなら、LibreOfficeに組み込まれている検索機能で十分です。多数のLibreOffice Writerファイル内からテキストを見つける必要がある場合は、ODTファイルを読み取り、フォルダー全体を一度に検索できる文書検索ツールを使用してください。

 

これは、WindowsからUbuntu、Mint、Fedora、Debian、その他のデスクトップディストリビューションに移行し、Windowsの文書検索に代わる実用的な方法を必要としているLinuxユーザーによくある状況です。

 

 

Linux向けの視覚的なgrep代替ツールを使用する

 

grepは高速ですが、必ずしも快適に使えるとは限りません。結果はターミナルに行単位で表示され、一致内容を理解するには、多くの場合ファイルを別途開く必要があります。文書を扱う場合は、Linux向けの視覚的なgrep代替ツールを使うと、はるかに簡単になります。

 

グラフィカルな検索ツールでは、フォルダーを選択し、キーワードを入力し、プレビューを確認し、結果を並べ替え、一致するファイルを直接開けます。これは、技術系のテキストファイルではなく、さまざまな形式が混在する文書フォルダー内を検索する場合に特に便利です。

 

 

Linux向けの最適な文書検索ツール

 

以下のツールは、ファイルがプレーンテキストではなく文書であるため、grepやripgrepでは不十分な場合に特に適した選択肢です。

 

 

SeekFast

 

SeekFastは、Windows、macOS、Linux向けの文書検索ツールです。ターミナルからプレーンテキストファイルだけを検索するのではなく、大量の文書コレクション内を検索するために設計されています。

 

主な利点は使いやすさです。フォルダーを選択して検索語を入力すると、各ファイルを開く前に一致する文を確認できます。正確なファイル名が分からず、多数の文書内を検索する必要がある場合に便利です。

 

SeekFast search results with matching text previews

 

SeekFastは多数の形式を検索し、関連性に基づいて結果を順位付けできるため、さまざまな文書形式が混在するフォルダーで特に役立ちます。従来の完全一致型ファイル検索よりも、Web検索に近い操作感を実現します。

 

主な機能は次のとおりです。

 

  • 文書検索 - PDF、Word、LibreOffice、Excel、テキストファイル、電子書籍、その他多くの文書形式の内部を検索します。
  • 一致する文のプレビュー - ファイルを開く前に関連するテキストを確認できます。
  • 関連性順の検索結果 - より適切に一致するファイルが検索結果の上位に表示されます。
  • 複数キーワード検索 - 単語同士が隣接していなくても文書を見つけられます。
  • グラフィカルな操作 - 一般的な文書検索作業のためにターミナルコマンドを作成する必要がありません。

 

メリット

  • 実際の文書を含むフォルダーでは、grepよりはるかに便利です。
  • 文書内の単語は覚えているものの、ファイル名が分からない場合に適しています。
  • 文脈が表示されるため、ファイルを開く前に結果を評価できます。
  • PDF、Office、LibreOffice、テキスト、その他の形式が混在するフォルダーに便利です。

 

デメリット

  • 無料版では、一度に検索できるファイル数が最大50件に制限されています。
  • ソースコード検索でgrepやripgrepを置き換えることを目的としたツールではありません。
  • 専門的なコマンドラインツールのような高度な正規表現ワークフローには対応していません。

 

主な作業がコードやログファイルの検索ではなく、多数の文書内の検索である場合は、SeekFastをダウンロードして、文書フォルダーの1つで試してみてください。

 

 

Recoll

 

Recollは、Unix系システム向けの無料デスクトップ検索ツールです。インデックスを使用するため、最初に選択したフォルダーをスキャンし、その後すばやく検索できるようになります。

 

Recoll document search tool on Linux

 

Recollは、システムにインストールされている補助パッケージに応じて、多くのテキスト形式や文書形式を検索できます。オープンソースのインデックス型デスクトップ検索ツールを求めており、設定にある程度時間をかけてもよい場合に適しています。

 

メリット

  • 無料でオープンソースです。
  • インデックス型のLinuxデスクトップ検索ツールとして優れています。
  • 適切な補助プログラムを使用することで、多くの文書形式を検索できます。

 

デメリット

  • 初回のインデックス作成と設定に時間がかかる場合があります。
  • 一般ユーザーには操作が技術的に感じられる場合があります。
  • 対応する文書形式が、インストール済みのシステムパッケージに左右される場合があります。

 

 

DocFetcher

 

DocFetcherは、Windows、macOS、Linux向けの無料オープンソース型デスクトップ検索アプリケーションです。Recollと同様に、選択したフォルダーのインデックスを作成する仕組みです。

 

DocFetcher document search tool on Linux

 

DocFetcherは、PDF、Microsoft Office、OpenDocument、HTML、プレーンテキストなどの一般的な文書形式に対応しています。無料のクロスプラットフォームツールを求めており、検索前にインデックスを作成することに抵抗がない場合に便利です。

 

メリット

  • 無料でオープンソースです。
  • Linux、Windows、macOSで利用できます。
  • インデックス化された文書のテキストプレビューを表示できます。

 

デメリット

  • 高速に検索できるようになる前にインデックス作成が必要です。
  • 多くの最新検索ツールと比べて、インターフェースが古く感じられます。
  • インデックスを準備せずに一時的なフォルダーを頻繁に検索する場合には、あまり便利ではありません。

 

まとめ

 

プレーンテキスト、コード、ログ、設定ファイルには、通常Linuxのコマンドラインツールが最速です。まずgrepを使用し、コードやテキストのフォルダーをより高速に再帰検索したい場合はripgrepを使用してください。

 

PDF、Word、LibreOffice、Excel、その他の文書ファイルでは、コマンドラインツールは不便だったり、検索が不完全だったりすることがよくあります。その場合は、SeekFast、Recoll、DocFetcherなどのグラフィカルな文書検索ツールのほうが適しています。

 

最も簡単な判断基準は、技術系のテキストファイルにはコマンドラインツールを使用し、実際の文書内をプレビュー付きで検索する必要がある場合は文書検索ツールを使用することです。

 

 

よくある質問

 

1. Linuxフォルダー内のすべてのファイルからテキストを検索するにはどうすればよいですか?
grep -Rが標準的なコマンドです。例:grep -RIn "text" /path/to/folder。この方法は、プレーンテキストファイル、ソースコード、ログ、設定ファイルに最適です。

 

2. サブフォルダーも検索するにはどうすればよいですか?
grep -Rで再帰検索を使用します。grep -RIn "text" ~/Documentsコマンドは、Documentsフォルダーとそのサブフォルダーを検索し、バイナリファイルをスキップして行番号を表示します。

 

3. 特定のファイル形式のみを検索するにはどうすればよいですか?
--includeを使用します。例:grep -RIn --include="*.txt" "text" ~/Documents。複数の拡張子には--includeを繰り返し指定できます。

 

4. grep検索からフォルダーを除外するにはどうすればよいですか?
--exclude-dirを使用します。例:grep -RIn --exclude-dir=".git" --exclude-dir="node_modules" "text" ~/project

 

5. 複数の候補単語を検索するにはどうすればよいですか?
grep -Eで拡張正規表現を使用します。例:grep -RInE "error|failed|timeout" ~/logs

 

6. grepでPDFやWordファイル内のテキストが見つからないのはなぜですか?
grepはプレーンテキスト向けに設計されています。PDF、Word、LibreOffice、Excelファイルではテキストがより複雑な形式で保存されているため、grepでは一致を見逃したり、判読できない出力が表示されたりする場合があります。これらのファイルには文書検索ツールを使用してください。

 

7. LinuxでPDF、Word、LibreOfficeファイル内を検索する最適な方法は何ですか?
文書形式に対応した検索ツールを使用してください。プレビューと関連性順の検索結果が必要な場合はSeekFastが便利です。インデックス型のデスクトップ検索を希望する場合は、RecollとDocFetcherが優れたオープンソースの代替手段です。

 

8. SeekFastはLinuxで動作しますか?
はい。SeekFastにはLinux版があり、グラフィカルインターフェースから多くの文書形式の内部を検索できます。

 

9. grep、ripgrep、SeekFastのどれを使用すべきですか?
通常のプレーンテキスト検索にはgrepを使用します。コードやテキストのフォルダーを高速に再帰検索するにはripgrepを使用します。PDF、Word、LibreOffice、Excel、その他の文書内をプレビュー付きで検索する必要がある場合はSeekFastを使用します。

 

10. コマンドラインからPDF内を検索できますか?
はい。PDFファイルにはpdfgrepを使用します。例:pdfgrep -RIn "text" ~/Documents。さまざまな文書形式が混在するフォルダーでは、通常、グラフィカルな文書検索ツールのほうが便利です。

著者について
Dimitar Stamenovは、テクノロジー業界で25年以上の経験を持つソフトウェア開発者であり、起業家です。彼は、SeekFast(最も人気のあるデスクトップ検索アプリの1つ)、Preslav ERP(企業向け業務管理システム)、SEORanks(SEOツールの定番サイト)などのツールを生み出してきました。また、Telerik AcademyやSoftware University Sofiaをはじめとする主要なテックアカデミーで講義も行ってきました。SeekFast blogでは、読者がソフトウェアを最大限に活用し、より速く作業を進められるようにするためのヒント、アイデア、実践的なソリューションをDimitarが共有しています。

コメントを残す

Your email address will not be published. Required fields are marked *