【Linux】unzipコマンドでZIPファイルを展開・中身を確認する

目次

概要

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

注意点

  1. デフォルトの上書き挙動オプションなしで展開する際、同名のファイルが既に存在すると、ファイルごとに「replace? [y]es, [n]o…」と上書き確認のプロンプトが表示され、処理が止まります。バッチ処理などで使う場合は注意が必要です。
  2. 日本語ファイル名の文字化けWindowsで作成されたZIP(Shift_JISエンコード)をLinux(UTF-8)で展開すると、ファイル名が文字化けすることがあります。一部のディストリビューションでは -O cp932 オプションで文字コードを指定できますが、標準機能ではない場合があります。
  3. パスのトラバーサル悪意のある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 でのディレクトリ指定展開は、作業環境をクリーンに保つための基本テクニックです。「何が入っているか確認してから、整理された場所に展開する」フローを習慣にしてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次