連載
» 2018年10月18日 05時00分 公開

Linux基本コマンドTips(250):【 zcat 】コマンド/【 zless 】コマンド/【 zmore 】コマンド/【 zgrep 】コマンド/【 zcmp 】コマンド/【 zdiff 】コマンド/――gzipで圧縮されたファイルを操作する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、gzipやbzip2、xzで圧縮したファイルに格納されているファイルを表示するコマンドを紹介します。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はgzipで圧縮されたファイルを表示する「zcat」コマンドと「zless」コマンド、「zmore」コマンド、「zgrep」コマンド、「zcmp」コマンド、「zdiff」コマンドです。bzip2コマンドやxzコマンドで圧縮されたファイルを扱う同様のコマンドも併せて紹介します。

zcatコマンド/zlessコマンド/zmoreコマンド/zgrepコマンド/zcmpコマンド/zdiffコマンドとは?

 「zcat」は、gzipコマンド(連載第39回)で圧縮されたファイルに対して利用できる「cat」コマンド(第1回)です。

 圧縮されたファイルをコマンド操作で伸張しなくても、そのまま表示できます。例えば「file.txt」をgzipで圧縮した「file.txt.gz」というファイルがあった場合、「zcat file.txt.gz」とすることで、「cat file.txt」と同様にファイルの内容が分かります。

 zlessやzmore、zgrep、zcmp、zdiffコマンドも同様で、それぞれ、lessコマンド(第84回)、moreコマンド(第2回)、grepコマンド(第9回)、cmpコマンド(第106回)、diffコマンド(第102回)相当の処理が可能です。

 なお、grepと同等の処理が可能なコマンドとして、zgrepの他に「zfgrep」コマンドと「zegrep」コマンドもあります(※1)。

 「bzip2」コマンド(第248回)で圧縮されたファイルに対しては「bzcat」「bzless」「bzmore」「bzgrep」「bzcmp」「bzdiff」コマンドを使用します。

 「xz」コマンド(第249回)で圧縮されたファイルに対しては同様に「xzcat」「xzless」「xzmore」「xzgrep」「xzcmp」「xzdiff」コマンドを使用します。

※1 zfgrepは「fgrep」コマンド相当の動作となる。fgrepは「grep -F」相当のコマンドであり、検索文字列を正規表現ではなく固定の文字列として扱う。同様に「egrep」は「grep -E」相当で、検索文字列に拡張正規表現を使用する。





zcatコマンドの書式

zcat [オプション] [ファイル名]

zlessコマンドの書式

zless [ファイル名]

zmoreコマンドの書式

zmore [ファイル名]

zgrepコマンドの書式

zgrep [オプション] [-e] パターン ファイル名

zcmpコマンドの書式

zcmp [オプション] ファイル名 [ファイル名]

zdiffコマンドの書式

zdiff [オプション] ファイル名 [ファイル名]

※[ ]は省略可能な引数を示しています。





各コマンドのオプション

 各コマンドのオプションについては、基となったコマンドのオプションを参照ください。



gzipコマンドで圧縮されたファイルの内容を表示する

 「zcat ファイル名」で、gzip形式で圧縮されたファイルの内容を表示します。拡張子の「.gz」は省略可能です(画面1)。

 同様に、「zless ファイル名」や「zmore ファイル名」で表示できます(画面2)。

コマンド実行例

zcat file.txt.gz

(file.txt.gzの圧縮元ファイルfile.txtをcatコマンドで表示する、「.gz」は省略可能)(画面1

zless file.txt.gz

(file.txtをlessコマンドで表示する、「.gz」は省略可能)

zmore file.txt.gz

(file.txtをmoreコマンドで表示する、「.gz」は省略可能)(画面2


画面1 画面1 gzipで圧縮されたファイルの内容を表示したところ zcatコマンドを用いた
画面2 画面2 gzipで圧縮されたファイルの内容を表示したところ zmoreコマンドを用いた


bzip2コマンドやxzコマンドで圧縮されたファイルの内容を表示する

 bzip2コマンドで圧縮されたファイルに対しては、「bzcat」や「bzless」「bzmore」コマンドで、圧縮元のファイルの内容を表示できます(画面3)。

 同様に、xzコマンドで圧縮されたファイルの場合、「xzcat」や「xzless」「xzmore」コマンドで、圧縮元のファイルの内容を確認できます(画面4)。

 なお、bzcatコマンドやxzcatコマンドなどの場合、拡張子(.bz2や.xz)を省略できません。

コマンド実行例

bzcat file.txt.bz2

(file.txt.bz2の圧縮元ファイルfile.txtをcatコマンドで表示する)(画面3

bzless file.txt.bz2

(file.txtをlessコマンドで表示する)

bzmore file.txt.bz2

(file.txtをmoreコマンドで表示する)(画面3

xzcat file.txt.xz

(file.txtをcatコマンドで表示する)(画面4

xzless file.txt.xz

(file.txtをlessコマンドで表示する)

xzmore file.txt.xz

(file.txtをmoreコマンドで表示する)(画面4


画面3 画面3 bzip2コマンドで圧縮されたファイルの内容を表示したところ
画面4 画面4 xzコマンドで圧縮されたファイルの内容を表示したところ


圧縮されたファイルの内容をgrepで検索する

 「zgrep 検索文字列 ファイル名」とすることで、gzipで圧縮されたファイルをgrepコマンドで検索できます(画面5)。

 同様に、bzip2で圧縮されたファイルの場合は「bzgrep 検索文字列 ファイル名」で検索できます(画面6)。xzで圧縮されたファイルであれば「xzgrep 検索文字列 ファイル名」とします(画面7)。

 zgrep、bzgrep、xzgrepはバイナリではなく、シェルスクリプトで書かれており、検索処理そのものはgrepコマンドが担っています。ただし、オプションの処理が若干異なるため、画面6のようにgrepコマンド用のオプションが一部利用できないケースがあるようです。

コマンド実行例

zgrep 検索文字列 file.txt.gz

(file.txt.gzの圧縮元ファイルであるfile.txtからgrepコマンドで「検索文字列」を探す、「.gz」は省略可能)

bzgrep 検索文字列 file.txt.bz2

(file.txtをgrepコマンドで検索する)

xzgrep 検索文字列 file.txt.xz

(file.txtをgrepコマンドで検索する)


画面5 画面5 gzipで圧縮されたファイルを検索したところ
画面6 画面6 bzip2で圧縮されたファイルを検索したところ
画面7 画面7 xzで圧縮されたファイルを検索したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。