このガイドでは、圧縮されたファイルをテキスト文字列または特定の式で検索する方法を説明します。
Grepコマンドを使用して結果を検索およびフィルタする方法
最も強力なLinuxコマンドの1つは、「グローバル正規表現印刷」を表すgrepです。
grepを使用すると、ファイルの内容内のパターンや別のコマンドの出力を検索できます。
たとえば、次のpsコマンドを実行すると、コンピュータ上で実行されているプロセスの一覧が表示されます。
ps -ef
結果は画面にスクロールされ、通常は多数の結果が表示されます。 これにより、特に痛い情報を見ることができます。
もちろんmoreコマンドを使用して、次のように一度に1ページの結果をリストすることができます。
ps -ef | もっと
上のコマンドの出力は前のコマンドよりも優れていますが、探しているものを見つけるために結果をページングする必要があります。
grepコマンドを使用すると、送信した条件に基づいて結果をフィルタリングすることができます。 たとえば、UIDが 'root'に設定されているすべてのプロセスを検索するには、次のコマンドを実行します。
ps -ef | grep root
grepコマンドはファイルに対しても機能します。 あなたが書籍のタイトルのリストを含むファイルを持っているとします。 ファイルに「赤い乗馬フード」が含まれているかどうかを確認したいとします。 次のようにファイルを検索できます。
grep "Little Red Riding Hood"ブックリスト
grepコマンドは非常に強力で、この記事では、このスイッチで使用できる有用なスイッチのほとんどを紹介します。
zgrepコマンドを使用して圧縮ファイルを検索する方法
少し知られているが、非常に強力なツールはzgrepです。 zgrepコマンドを使用すると、まず内容を抽出せずに圧縮ファイルの内容を検索できます。
zgrepコマンドは、 zipファイルまたはgzipコマンドを使用して圧縮されたファイルに対して使用できます。
違いはなんですか?
zipファイルには複数のファイルを含めることができますが、gzipコマンドで圧縮したファイルには元のファイルのみが含まれています。
gzipで圧縮されたファイル内のテキストを検索するには、次のコマンドを入力するだけです:
zgrep式ファイル検索
たとえば、書籍リストがgzipを使用して圧縮されているとします。 次のコマンドを使用して、圧縮ファイル内の「赤い乗り物」のテキストを検索することができます。
zgrep "Little Red Riding Hood" bookslist.gz
zgrepコマンドの一部としてgrepコマンドを使用すると、任意の式とすべての設定を使用できます。
zipgrepコマンドを使用して圧縮ファイルを検索する方法
zgrepコマンドは、gzipを使って圧縮されたファイルでうまく動作しますが、zipユーティリティを使用して圧縮されたファイルではうまく動作しません。
zipファイルに1つのファイルが含まれていても、ほとんどのzipファイルに複数のファイルが含まれている場合は、zgrepを使用できます。
zipgrepコマンドは、zipファイル内のパターンを検索するために使用されます。
例として、次のタイトルの書籍というファイルがあるとします。
- ハリー・ポッターと秘密の部屋
- シュルーの味方
- マウスと男性の
- ヒッチハイクの銀河ガイド
- ハリー・ポッターとフェニックスの勲章
また、次のタイトルのムービーと呼ばれるファイルがあるとします
- マトリックス
- ハリー・ポッターと秘密の部屋
- ハリーポッターと炎のゴブレット
- スターウォーズ - 新しい希望
これらの2つのファイルがzip形式でmedia.zipというファイルに圧縮されているとします。
zipgrepコマンドを使用して、zipファイル内のすべてのファイル内のパターンを見つけることができます。 例えば:
zipgrepパターンファイル名
たとえば、次のコマンドを使用するすべての「Harry Potter」が見つかったとします。
zipgrep "Harry Potter" media.zip
出力は次のようになります。
書籍:ハリー・ポッターと秘密の部屋
本:ハリー・ポッターとフェニックスの序列
映画:ハリー・ポッターと秘密の部屋
映画:ハリー・ポッターと火の杯
grepで使用できるzipgrepで任意の式を使用できるようになるため、ツールが非常に強力になり、解凍、検索、圧縮するよりもずっと簡単にzipファイルを検索できます。
zipファイル内の特定のファイルのみを検索する場合は、コマンドの一部としてzipファイル内で検索するファイルを次のように指定できます。
zipgrep "Harry Potter" media.zip movies
出力は次のようになります
映画:ハリー・ポッターと秘密の部屋
映画:ハリー・ポッターと火の杯
1つを除くすべてのファイルを検索する場合は、次のコマンドを使用できます。
zipgrep "Harry Potter" media.zip -x books
これは、書籍以外のmedia.zip内のすべてのファイルを検索するので、以前と同じ出力を生成します。