Linux で zip アーカイブの内容を一覧表示する方法

LinuxBeginner
オンラインで実践に進む

はじめに

このチュートリアルでは、Linux システム上で zip アーカイブの内容を一覧表示する方法を説明します。あなたが開発者、システム管理者、または単なる好奇心旺盛な Linux ユーザーであっても、コマンドラインから zip ファイルを操作する方法を理解することは、非常に役立つスキルです。ここでは、zip アーカイブの基本、内容を一覧表示する手順、およびファイルをより効率的に管理するための実践的なユースケースと例について説明します。

ZIP ユーティリティのインストール

Linux で zip アーカイブを操作するには、適切なユーティリティがインストールされている必要があります。必要な主要ツールは、zip コマンドと unzip コマンドです。

これらのユーティリティがシステムに既にインストールされているかどうかを確認しましょう。ターミナルを開き、次のコマンドを実行します。

which zip
which unzip

これらのコマンドが /usr/bin/zip/usr/bin/unzip のようなパスを返す場合、ツールは既にインストールされています。何も出力されない場合は、インストールする必要があります。

Ubuntu では、apt パッケージマネージャーを使用して zip ユーティリティをインストールできます。

sudo apt update
sudo apt install -y zip unzip

インストールを確認しましょう。

zip --version
unzip -v | head -n 1

出力には、インストールされている zip ユーティリティのバージョンが表示されます。以下のような感じです。

Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.

必要なツールがインストールされたので、zip アーカイブを作成して操作する準備ができました。

サンプル Zip アーカイブの作成

zip アーカイブの内容を一覧表示する方法を学ぶ前に、操作するサンプル zip ファイルを作成しましょう。これにより、このチュートリアル全体で使用できる実践的な例が得られます。

まず、サンプルファイルを保存するディレクトリを作成しましょう。ターミナルで次のコマンドを実行します。

mkdir -p ~/project/zip_demo
cd ~/project/zip_demo

次に、異なる内容を持ついくつかのサンプルファイルを作成しましょう。

echo "This is a text file for our zip demo." > sample_text.txt
echo "Another text file with different content." > another_text.txt
mkdir -p documents
echo "This file is inside a subdirectory." > documents/nested_file.txt

ファイルが正しく作成されたことを確認しましょう。

ls -la
ls -la documents

次のような出力が表示されるはずです。

total 20
drwxrwxr-x 3 labex labex 4096 Jul 15 10:00 .
drwxr-xr-x 3 labex labex 4096 Jul 15 10:00 ..
-rw-rw-r-- 1 labex labex   39 Jul 15 10:00 another_text.txt
drwxrwxr-x 2 labex labex 4096 Jul 15 10:00 documents
-rw-rw-r-- 1 labex labex   35 Jul 15 10:00 sample_text.txt

total 12
drwxrwxr-x 2 labex labex 4096 Jul 15 10:00 .
drwxrwxr-x 3 labex labex 4096 Jul 15 10:00 ..
-rw-rw-r-- 1 labex labex   36 Jul 15 10:00 nested_file.txt

次に、これらのファイルを含む zip アーカイブを作成しましょう。

zip -r sample_archive.zip sample_text.txt another_text.txt documents/

-r オプションは、zip コマンドにすべてのファイルとサブディレクトリを再帰的に含めるように指示します。

次のような出力が表示されるはずです。

  adding: sample_text.txt (stored 35 bytes)
  adding: another_text.txt (stored 39 bytes)
  adding: documents/ (stored 0 bytes)
  adding: documents/nested_file.txt (stored 36 bytes)

これで、サンプルファイルとディレクトリを含む sample_archive.zip という名前の zip アーカイブが作成されました。次のステップでは、このアーカイブの内容を一覧表示する方法を学びます。

Zip コンテンツを一覧表示する基本メソッド

サンプル zip アーカイブを作成したので、その内容を一覧表示する方法を学びましょう。この目的のための主要なコマンドは、さまざまなオプションを指定した unzip です。

-l オプション (List) の使用

zip アーカイブの内容を一覧表示する最も一般的な方法は、-l オプションを指定して unzip コマンドを使用することです。このオプションは、アーカイブ内の各ファイルに関する基本情報を示すテーブルを表示します。

zip デモディレクトリに移動し、サンプルアーカイブの内容を一覧表示しましょう。

cd ~/project/zip_demo
unzip -l sample_archive.zip

次のような出力が表示されるはずです。

Archive:  sample_archive.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       35  2023-07-15 10:00   sample_text.txt
       39  2023-07-15 10:00   another_text.txt
        0  2023-07-15 10:00   documents/
       36  2023-07-15 10:00   documents/nested_file.txt
---------                     -------
      110                     4 files

出力は以下を示しています。

  • 各ファイルのサイズ (バイト単位)
  • 各ファイルが最後に変更された日時
  • 各ファイルまたはディレクトリの名前
  • 合計サイズとファイル数を示す概要

-Z オプション (ZipInfo) の使用

別のオプションは、-Z オプションを使用することです。これにより、より簡潔なリストが提供されます。

unzip -Z sample_archive.zip

次のような出力が表示されるはずです。

Archive:  sample_archive.zip
Zip file size: 676 bytes, number of entries: 4
-rw-rw-r--  3.0 unx       35 tx defN 23-Jul-15 10:00 sample_text.txt
-rw-rw-r--  3.0 unx       39 tx defN 23-Jul-15 10:00 another_text.txt
drwxrwxr-x  3.0 unx        0 bx stor 23-Jul-15 10:00 documents/
-rw-rw-r--  3.0 unx       36 tx defN 23-Jul-15 10:00 documents/nested_file.txt
4 files, 110 bytes uncompressed, 110 bytes compressed:  0.0%

この形式は、ファイル権限、圧縮情報、およびその他の詳細をよりコンパクトな形式で表示します。

次のステップでは、zip コンテンツを一覧表示するためのより高度なオプションを調べ、結果を解釈する方法を理解します。

Zip コンテンツを表示するための高度なオプション

次に、zip アーカイブの内容を一覧表示するためのいくつかの高度なオプションを調べてみましょう。これにより、アーカイブ内のファイルに関するより詳細な情報が得られます。

-v オプション (Verbose) の使用

-v オプションは、圧縮方法、圧縮率、CRC (Cyclic Redundancy Check) 値など、アーカイブ内の各ファイルに関するより詳細な情報を提供します。

cd ~/project/zip_demo
unzip -v sample_archive.zip

次のような出力が表示されるはずです。

Archive:  sample_archive.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
      35  Stored       35   0% 2023-07-15 10:00 a1b2c3d4  sample_text.txt
      39  Stored       39   0% 2023-07-15 10:00 e5f6g7h8  another_text.txt
       0  Stored        0   0% 2023-07-15 10:00 00000000  documents/
      36  Stored       36   0% 2023-07-15 10:00 i9j0k1l2  documents/nested_file.txt
--------          -------  ---                            -------
     110             110   0%                            4 files

この出力は、次の追加情報を提供します。

  • Method: 使用された圧縮方法 (この場合、"Stored" は圧縮なしを意味します)
  • Size: ファイルの圧縮後のサイズ
  • Cmpr: 圧縮率 (パーセンテージ)
  • CRC-32: ファイルの整合性を検証するために使用されるチェックサム値

Grep を使用した出力のフィルタリング

大規模な zip アーカイブに特定のファイルが存在するかどうかを確認したい場合があります。unzip -l コマンドと grep を組み合わせて、特定のファイルを検索できます。

unzip -l sample_archive.zip | grep "nested_file"

このコマンドは、名前に "nested_file" というテキストが含まれるエントリのみを表示します。

       36  2023-07-15 10:00   documents/nested_file.txt

Zip アーカイブ内のファイルをカウントする

zip アーカイブ内のファイルの数をカウントするには、次のコマンドを使用できます。

unzip -l sample_archive.zip | grep -v "Archive:" | grep -v "Length" | grep -v "-------" | grep -v "^$" | wc -l

このコマンドは、ヘッダー行とフッター行をフィルタリングし、残りの行をカウントします。これは、アーカイブ内のファイルとディレクトリに対応します。

出力は次のようになります。

4

これで、高度なオプションを使用して zip アーカイブの内容に関するより詳細な情報を取得し、特定のファイルを検索し、アーカイブ内のファイルをカウントする方法がわかりました。

実用的なユースケースと例

zip アーカイブの内容を一覧表示する方法を学んだので、これらのスキルが役立つ実用的なシナリオをいくつか見てみましょう。日々の Linux の使用で遭遇する可能性のある、より現実的な例に取り組みます。

バックアップアーカイブの作成

バックアップの作成は、zip アーカイブの一般的なユースケースです。設定ファイルのバックアップを作成してみましょう。

cd ~/project/zip_demo
mkdir -p config
echo "server_name=example.com" > config/server.conf
echo "user=admin" > config/user.conf
echo "port=8080" > config/port.conf

## 日付付きのバックアップアーカイブを作成する
zip -r backup_$(date +%Y%m%d).zip config/

このコマンドは、backup_YYYYMMDD.zip の形式で今日の日付を含むバックアップファイルを作成します。

バックアップの内容を確認しましょう。

unzip -l backup_*.zip

バックアップしたすべての設定ファイルが一覧表示された出力が表示されるはずです。

アーカイブコンテンツの比較

変更点を確認するために、2 つの zip アーカイブの内容を比較する必要がある場合があります。いくつかの変更を加えて、2 番目のバックアップを作成してみましょう。

## ファイルを修正する
echo "port=9090" > config/port.conf
## 新しいファイルを追加する
echo "debug=true" > config/debug.conf
## 新しいバックアップを作成する
zip -r backup_new.zip config/

次に、2 つのバックアップファイルの内容を比較してみましょう。

## 最初のバックアップのファイルを一覧表示する
echo "Original backup:"
unzip -l backup_*.zip | grep -v "Archive:" | grep -v "Length" | grep -v -e "-------"

## 新しいバックアップのファイルを一覧表示する
echo -e "\nNew backup:"
unzip -l backup_new.zip | grep -v "Archive:" | grep -v "Length" | grep -v -e "-------"

新しいバックアップには追加の debug.conf ファイルが含まれており、port.conf ファイルは変更のためにサイズが異なる可能性があることに気付くでしょう。

特定のファイルの抽出

zip コンテンツの一覧表示から得られた情報を使用して、特定のファイルのみを抽出できます。

## 抽出用のディレクトリを作成する
mkdir -p extracted

## まず内容を一覧表示する
unzip -l backup_new.zip

## debug.conf ファイルのみを抽出する
unzip backup_new.zip "config/debug.conf" -d extracted/

要求されたファイルのみが抽出されたことを確認しましょう。

ls -la extracted/config/

抽出されたディレクトリに debug.conf ファイルのみが表示されるはずです。

これらの実用的な例を習得することで、さまざまな現実世界のシナリオで zip アーカイブを効果的に管理するスキルを習得できました。バックアップの作成から、アーカイブコンテンツの比較、ファイルの選択的な抽出まで、これらのテクニックは Linux でのファイル管理をより効率的にするのに役立ちます。

まとめ

このチュートリアルでは、Linux で zip アーカイブを操作する方法を学び、特にその内容の一覧表示に焦点を当てました。以下に、取り上げた内容をまとめます。

  1. Linux システムに必要な zip ユーティリティのインストール
  2. 操作するためのサンプル zip アーカイブの作成
  3. unzip -l などの基本的なコマンドを使用したアーカイブの内容の一覧表示
  4. 詳細情報のための unzip -v などの高度なオプションの調査
  5. バックアップの作成、アーカイブの比較、特定のファイルの抽出などの実用的なシナリオでのこれらのスキルの適用

これらのスキルは、ファイル管理、トラブルシューティング、バックアップ、および Linux のさまざまなタスクに役立ちます。これで、zip アーカイブを抽出せずに自信を持って検査できるようになり、大規模なアーカイブを操作する際に時間とディスク容量を節約できます。

覚えておくべき主なコマンドを以下に示します。

  • unzip -l archive.zip: アーカイブの内容の基本的な一覧表示
  • unzip -v archive.zip: 圧縮の詳細を含む詳細な一覧表示
  • unzip -Z archive.zip: 簡潔な一覧表示形式
  • unzip -l archive.zip | grep "filename": 特定のファイルの検索

これらのコマンドを自由に使用して、Linux 環境で zip アーカイブを効率的に管理できます。