- はじめに
- まずは、ファイルを圧縮する
- 解凍せずに、zipファイルに含まれるファイル一覧を表示する
- 解凍せずに、gzファイルの中身を閲覧する
- 解凍せずに、gzファイルの中身を部分的に閲覧する
- まとめ
- 参考資料
はじめに
Linux/Mac環境では圧縮されたファイルの中身を閲覧するときに、 わざわざ、ファイル解凍をしなくても、中身を確認することができます。
ただし、圧縮形式によっては、 複数ファイルを一緒に圧縮できる形式(zipやtar.gzなど)であるのか、 1つずつのファイルごとに圧縮する形式(gzなど)であるのか が変わってきます。よって、ファイルの中身の表示され方も変わってきます。
圧縮ファイルを解凍すると、一時的にでも大きなファイルが生成されるので、 解凍しなくて確認できれば、その余分な生成を避けることができます。 知っていると、とても便利な方法です。
それでは、圧縮ファイルを解凍せずに、中身を見る方法を紹介していきます。
実行環境
M1 Mac環境で実行しています。
macOS Big Sur (バージョン11.5.2) MacBook Air (M1, 2020) チップ Apple M1 メモリ 16GB
まずは、ファイルを圧縮する
まずは、適当なテキストファイルを圧縮(zip/gz)します。
#ファイル内表示 cat test.txt #hoge 1 #hoge 2 #hoge 3 #hoge 4 #hoge 5 #hoge 6 #hoge 7 #hoge 8 #hoge 9 #hoge 10 #zip圧縮: -rオプションで、ファイル名を指定する zip -r test.zip test.txt #gz圧縮: -kオプションで元ファイルを残す gzip -k test.txt #詳細表示 ls -lh #-rw-r--r--@ 1 sas staff 81B 1 18 18:10 test.txt #-rw-r--r--@ 1 sas staff 64B 1 18 18:10 test.txt.gz #-rw-r--r-- 1 sas staff 203B 1 18 18:32 test.zip
zipとgzipコマンドを用いて、ファイル圧縮を行いました。 次に、これらのファイルを使って、解凍せず表示というのをやってみます。
解凍せずに、zipファイルに含まれるファイル一覧を表示する
まずは、zip圧縮ファイルを使って実行します。
ここでは、zipinfo
あるいはunzip -Z
コマンドを使うことで、
圧縮されたファイルに含まれるファイル一覧が表示できます。・
#ZIPファイル内の情報の表示 zipinfo -lht test.zip #Archive: test.zip #Zip file size: 203 bytes, number of entries: 1 #-rw-r--r-- 3.0 unx 81 tx 37 defN 23-Jan-18 18:10 test.txt #1 file, 81 bytes uncompressed, 37 bytes compressed: 54.3% #unzip実行 unzip -Z test.zip #Archive: test.zip #Zip file size: 203 bytes, number of entries: 1 #-rw-r--r-- 3.0 unx 81 tx defN 23-Jan-18 18:10 test.txt #1 file, 81 bytes uncompressed, 37 bytes compressed: 54.3%
両コマンドで、表示結果は同じで、圧縮率まで表示されます。 今回の圧縮率は、54.3%となっていますね。
解凍せずに、gzファイルの中身を閲覧する
次に、gz圧縮ファイルを使ってやってみます。 gz圧縮形式だと、必ず1つずつファイル圧縮されているので、 この実行でファイルの中身(テキスト文)まで表示されます。
コマンドとしては、zcat
、gzip -dc
あるいはgunzip -c
を使います。
zcat
は、「gzip」コマンドなどで圧縮された圧縮ファイルの中身を表示するときの専用コマンドですね。
ただ、Macの場合、zcat
の代わりに、gzcat
を使うみたいです。
それでは、実行してみます。
#(LINUX)圧縮ファイルの中身の表示 zcat test.txt.gz #(Mac)圧縮ファイルの中身の表示 gzcat test.txt.gz #hoge 1 #hoge 2 #hoge 3 #hoge 4 #hoge 5 #hoge 6 #hoge 7 #hoge 8 #hoge 9 #hoge 10 #gzipでの実行方法 gzip -dc test.txt.gz #(省略) #gunzipでの実行方法 gunzip -c test.txt.gz #(省略)
gzipの-dc
オプションは、展開と標準出力を意味します。
また、gunzipの-c
オプションは、標準出力のみを実行します。
当然ながら、3つの方法とも、同じ出力結果となりますので、省略してます。
解凍せずに、gzファイルの中身を部分的に閲覧する
続いて、ファイル内をすべて表示されると冗長なとき、 ファイルの一部分のみを表示させたくなります。
そこで、実行の際にheadやtailをパイプで組み合わせることで、 先頭から数行とか、最終行から数行とかを部分を切り取って表示することができます。
例えば、gz圧縮されたファイル内の先頭から4行のみを表示したい場合には、以下のように実行します。
#(Mac)gzcat実行 gzcat test.txt.gz | head -n 4 #hoge 1 #hoge 2 #hoge 3 #hoge 4 #gzip実行 gzip -dc test.txt.gz | head -n 4 #gunzip実行 gunzip -c test.txt.gz | head -n 4
ちなみに、gz圧縮されたファイル内の最終行までの4行を表示したい場合には、以下と実行します。
#(Mac)gzcat実行 gzcat test.txt.gz | tail -n 4 #hoge 7 #hoge 8 #hoge 9 #hoge 10 #gzip実行 gzip -dc test.txt.gz | tail -n 4 #gunzip実行 gunzip -c test.txt.gz | tail -n 4
「先頭から4行」、「最終行までの4行」というかたちで、それぞれ出力できました。
まとめ
このやり方を知れば、zipやgz形式の圧縮ファイルが現れても、 中身が見えて、安心ですね。。www