目次
概要
ZIP形式で圧縮されたアーカイブファイルを、展開(解凍)するためのコマンドです。
単にファイルを元に戻すだけでなく、展開せずに中身のファイル一覧を確認したり、特定のファイルだけを選んで取り出したりすることも可能です。Windows環境で作成されたデータの受け取り時によく利用されます。
仕様(引数・オプション)
構文
unzip [オプション] [ZIPファイル名]
主な引数・オプション
| オプション | 説明 |
| -d [ディレクトリ] | 指定したディレクトリにファイルを展開します。 |
| -l | ファイルを展開せず、中身のリスト(一覧)を表示します。 |
| -t | ファイルを展開せず、アーカイブの整合性をテスト(破損チェック)します。 |
| -p | ファイルデータをディスクに保存せず、標準出力に書き出します(パイプ処理用)。 |
| -x [ファイル] | 特定のファイルを展開対象から除外します。 |
| -f | ディスク上のファイルより新しい場合のみ、アーカイブ内のファイルで上書きします。 |
| -c | ファイルの内容をファイル名とともに標準出力に表示します。 |
| -z | アーカイブのコメントのみを表示します。 |
| -Z | アーカイブの詳細情報(圧縮率や権限など)を表示します(zipinfoコマンド相当)。 |
基本の使い方
いきなり展開するのではなく、まずは -l オプションで中身を確認するのが安全な手順です。
# ZIPファイルの中身を一覧表示(展開はしない)
unzip -l material_pack.zip
実行結果例
Archive: material_pack.zip
Length Date Time Name
--------- ---------- ----- ----
1024 2025-10-05 14:30 readme.txt
54321 2025-10-05 14:31 images/logo.png
20480 2025-10-05 14:32 images/bg.jpg
--------- -------
75825 3 files
中身を確認後、オプションなしで実行してカレントディレクトリに展開します。
# カレントディレクトリにすべて展開
unzip material_pack.zip
実践コマンド
展開先ディレクトリを指定して解凍する
ZIPファイル内にフォルダが含まれていない場合、カレントディレクトリに大量のファイルが散乱するのを防ぐため、-d オプションで出力先フォルダを指定します。
# 'restored_data' ディレクトリを作成し、その中に展開
unzip backup_data.zip -d restored_data/
特定のファイルだけを取り出す
巨大なアーカイブから、必要なファイルだけをピンポイントで復元します。
# アーカイブ内の 'readme.txt' だけを展開
unzip source_code.zip readme.txt
特定のファイルを除外して展開する
例えば、Macで作成されたZIPに含まれる管理ファイル(__MACOSX フォルダや .DS_Store)を除外して展開したい場合に便利です。
# ゴミファイルを除外して展開
unzip project_files.zip -x "__MACOSX/*" "*.DS_Store"
カスタムポイント
- ファイルの中身を直接パイプに渡す (-p)ファイルを保存せずに中身を検索したい場合などに使用します。Bash
# 解凍せずに、アーカイブ内のログファイルから "Error" を検索 unzip -p server_logs.zip "app.log" | grep "Error" - 上書き確認のスキップ (-o / -n)デフォルトでは同名ファイルがあると確認を求められますが、-o (overwrite) で強制上書き、-n (never) で上書きしない設定が可能です(入力リスト外ですが実用上重要です)。Bash
# 確認なしですべて上書き展開 unzip -o update_patch.zip
注意点
- デフォルトの上書き挙動オプションなしで展開する際、同名のファイルが既に存在すると、ファイルごとに「replace? [y]es, [n]o…」と上書き確認のプロンプトが表示され、処理が止まります。バッチ処理などで使う場合は注意が必要です。
- 日本語ファイル名の文字化けWindowsで作成されたZIP(Shift_JISエンコード)をLinux(UTF-8)で展開すると、ファイル名が文字化けすることがあります。一部のディストリビューションでは -O cp932 オプションで文字コードを指定できますが、標準機能ではない場合があります。
- パスのトラバーサル悪意のあるZIPファイルには ../../etc/passwd のようなパスが含まれている可能性があります。unzip は通常これを警告または無効化しますが、信頼できないファイルの展開時は -l でパスを確認することを推奨します。
応用
アーカイブの破損チェックを行う
展開前にファイルが正常にダウンロードできたか、壊れていないかを確認します。
# 展開せずに整合性テストを実行
unzip -t download_archive.zip
実行結果例
Archive: download_archive.zip
testing: setup.sh OK
testing: bin/app OK
No errors detected in compressed data of download_archive.zip.
まとめ
unzip コマンドは、Linux環境でのデータ授受において必須のツールです。
特に -l での中身確認と -d でのディレクトリ指定展開は、作業環境をクリーンに保つための基本テクニックです。「何が入っているか確認してから、整理された場所に展開する」フローを習慣にしてください。
