カテゴリ: Linuxコマンド集 更新日: 2026/08/10

grep --binary-filesオプションの使い方|バイナリファイルも検索対象にできる便利機能

grep --binary-filesオプション|バイナリファイルの扱いを指定する
grep --binary-filesオプション|バイナリファイルの扱いを指定する

先生と生徒の会話形式で理解しよう

生徒

「grepってテキストを検索するコマンドですよね?でもバイナリファイルだと使えないって聞きました。」

先生

「そのとおり。grepは基本的にテキストファイル向けですが、--binary-filesオプションを使うとバイナリファイルに対する動作を制御できますよ。」

生徒

「バイナリファイルって何ですか?あと、どうやって使うんですか?」

先生

「いい質問ですね。まずはバイナリファイルの意味と、このオプションの使い方から見ていきましょう。」

1. grepとは?基本の使い方をおさらい

1. grepとは?基本の使い方をおさらい
1. grepとは?基本の使い方をおさらい

grep(グレップ)は、Linuxでテキストファイルから特定の文字列を検索するためのコマンドです。例えば、errorという単語をファイルの中から探すには、以下のようにします。


grep error log.txt
error: connection failed
error: file not found

このように、指定したキーワードを含む行だけを表示してくれる便利なコマンドです。

2. バイナリファイルとは何か?

2. バイナリファイルとは何か?
2. バイナリファイルとは何か?

バイナリファイルとは、人間が読むための文字だけでなく、機械が処理するためのデータ(画像・音声・プログラムなど)が含まれたファイルのことです。例えば、JPEG画像ファイルやPDFファイル、実行ファイルなどがバイナリファイルです。

grepは通常、こうしたバイナリファイルを読み込もうとすると、「バイナリファイルです」と判断して処理をスキップする場合があります。

3. grep --binary-filesオプションの役割

3. grep --binary-filesオプションの役割
3. grep --binary-filesオプションの役割

--binary-filesオプションは、grepがバイナリファイルをどう扱うかを指定するオプションです。主に以下の3つのモードがあります:

  • --binary-files=binary:バイナリとして扱い、マッチしても内容は表示せず、通知だけ行う。
  • --binary-files=text:バイナリでもテキストファイルとして扱う。出力もされる。
  • --binary-files=without-matchマッチしないとして扱う。つまり完全スキップ。

デフォルトではbinaryです。つまりgrepは通常、バイナリファイル内で検索結果が見つかっても、「Binary file x matches」のような一文しか表示しません。

4. --binary-files=textでバイナリファイルから文字列を抽出する

4. --binary-files=textでバイナリファイルから文字列を抽出する
4. --binary-files=textでバイナリファイルから文字列を抽出する

PDFやログの一部がバイナリ形式だった場合、通常のgrepでは内容が見られないことがあります。そこで--binary-files=textを使えば、バイナリファイルでも中身を検索・表示できます。


grep --binary-files=text "error" report.pdf
error: failed to load image
error: invalid byte sequence

このように、ファイルがバイナリ扱いであっても、textとして処理すれば検索結果をしっかり表示できます。ただし文字コードが不正だったり、ファイルが完全にバイナリの場合は意味不明な文字列になることもあります。

5. --binary-files=without-matchで完全に無視する

5. --binary-files=without-matchで完全に無視する
5. --binary-files=without-matchで完全に無視する

もし「バイナリファイルは検索対象にしたくない」という場合は、--binary-files=without-matchを使えば、そのファイルは無視されるようになります。


grep --binary-files=without-match "error" *
(※バイナリファイルはスキップされ、テキストのみ結果が出る)

6. --binary-filesオプションと--exclude/--includeの併用

6. --binary-filesオプションと--exclude/--includeの併用
6. --binary-filesオプションと--exclude/--includeの併用

検索対象のファイルを限定する--include--excludeと組み合わせることで、より柔軟な検索が可能になります。


grep --binary-files=text --include="*.log" "ERROR" *
ERROR: system crashed
ERROR: unknown input

このようにして、拡張子が.logのファイルだけを対象にしつつ、バイナリファイルもテキストとして処理できるのです。

7. バイナリと誤判定されたテキストファイルにも使える

7. バイナリと誤判定されたテキストファイルにも使える
7. バイナリと誤判定されたテキストファイルにも使える

ファイルの中には、文字コードや改行コードの関係で、本当はテキストなのにバイナリと誤判定されることがあります。そういったときも、--binary-files=textを使うことで、内容を正常に検索できます。

たとえば、WindowsからコピーしたCSVファイルがバイナリ判定されてしまうケースなどが該当します。

8. 他のgrep関連オプションと組み合わせて使おう

8. 他のgrep関連オプションと組み合わせて使おう
8. 他のgrep関連オプションと組み合わせて使おう

--binary-filesは、他のgrepオプションとも相性が良いです。例えば、-rで再帰的に検索しつつ、バイナリファイルの扱いをコントロールできます。


grep -r --binary-files=text "password" /var/log
password expired
password reset required

ログディレクトリやシステム設定を調べるときに、意外とバイナリファイルが混ざっていることがあるので、うまく使い分けましょう。

関連記事:
カテゴリの一覧へ
新着記事
New1
システム情報・プロセス管理
ps -Aオプション|すべてのプロセスを表示する
New2
ファイル・ディレクトリ操作
cp --parentsオプションの使い方|ディレクトリ構造を保持してコピーする方法を完全解説!
New3
ファイル・ディレクトリ操作
rm -fオプションとは?Linuxで存在しないファイルでもエラーを出さず強制削除する方法
New4
演算と比較
シェルスクリプトでファイル存在チェックを行う比較演算子まとめ
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
テキスト・データ処理
catコマンドとは?Linuxでファイル内容を表示・連結する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
pwdコマンドとは?初心者でもわかる現在の作業ディレクトリの確認方法を解説!
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門