(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】複数ファイルのzipをunzipコマンドで解凍する

スポンサーリンク

はじめに

UNIX環境ではzip形式のファイルを展開するためにgunzipコマンドが存在します。

$ which gunzip
/bin/gunzip

ファイル群がtarで括られ、それをzip形式としていれば問題なくgunzipで展開されるのですが、ファイル群をzip形式にしていると以下のようなエラーとなります。

$ gunzip -d --suffix zip hoge.zip
gzip: hoge.zip has more than one entry -- unchanged

本記事では、複数ファイルが含まれている場合でも利用できるunzipコマンドをインストールし、解凍した流れを説明します。

環境情報
  • Debian GNU/Linux 9 (stretch)

複数ファイルが格納されたzipを解凍する

方針としてはapt-getでコマンドを落として実行します。

unizpコマンドをインストールする

apt-cacheで検索をかけます。

$ apt-cache search unzip
comprez - frontend to many compression programs
devscripts - scripts to make the life of a Debian Package maintainer easier
...
unzip - De-archiver for .zip files
...
libzzip-dev - library providing read access on ZIP-archives - development
zziplib-bin - library providing read access on ZIP-archives - binaries

ここにあるunzipを利用します。

$ apt-get install unzip
Reading package lists... Done
Building dependency tree
...
Setting up unzip (6.0-21+deb9u2) ...
Processing triggers for man-db (2.7.6.1-2) ...

コマンドのインストールが完了しました。

$ which unzip
/usr/bin/unzip

unzipコマンドを利用する

対象のzipファイルを

$ file hoge.zip
hoge.zip: Zip archive data, at least v1.0 to extract

unzipで展開します。

UNZIP(1) General Commands Manual UNZIP(1)

NAME
unzip - list, test and extract compressed files in a ZIP archive

オプションなしでコマンドを発行すると以下のように展開した情報が表示されます。

$ unzip hoge.zip
Archive:  hoge.zip
4ff1f647b4bdcf5d0dd42f9c58f8ee32a958f5dd
   creating: hoge/
  inflating: hoge/a.txt
  inflating: hoge/b.md
  inflating: hoge/c.sh

確かに複数ファイルが格納された状態で、ディレクトリとして展開されました。

$ ls hoge
a.txt  b.md  c.sh

終わりに

複数のファイルをzipでまとめられたものをLinux環境に配置すると、gunzipやtarでは解凍できなくて困るケースがあります。
同様の事象でお困りの方が、該当の流れで解決すれば幸いです。