Utiliser la commande unzip pour décompresser des fichiers sur Linux

ZIP est un format de décompression universel.
Ainsi lorsque l'on utilise Linux, on peut avoir besoin de décompresser un fichier ZIP.
Pour y parvenir, notamment en ligne de commandes depuis un terminal Linux, on peut utiliser la commande unzip.

Ce tutoriel vous guide pour utiliser la commande unzip pour décompresser des fichiers sur Linux.

Utiliser la commande unzip pour décompresser des fichiers sur Linux

Comment utiliser la commande unzip

Installer zip sur Ubuntu et Debian

Avec l'utilitaire APT des distributions Debian ou Ubuntu :

sudo apt install unzip
Installer zip sur Ubuntu et Debian

Installer zip sur CentOS et Fedora

Avec l'utilitaire YUM pour les distributions Redhat comme CentOS ou Fedora :

sudo yum install unzip

Exemple d'utilisation de la commande unzip pour décompresser des fichiers sur Linux

Décompresser un fichier avec unzip

Dans sa forme la plus simple, lorsqu'il est utilisé sans option, la commande UNZIP extrait tous les fichiers de l'archive ZIP spécifiée dans le répertoire actuel.

unzip fichier.zip

Les fichiers zip ne prennent pas en charge les informations de propriété de style Linux. Les fichiers extraits appartiennent à l'utilisateur qui exécute la commande.

unzip : Décompresser un fichier avec Unzip

Supprimer la sortie de la commande unzip

Par défaut, unzip imprime les noms de tous les fichiers qu'il extrait et un résumé lorsque l'extraction est terminée.

Utilisez l'option -q pour rendre la commande unzip muette et ne rien afficher dans la sortie du terminal :

unzip -q fichier.zip

Décompresser un fichier zip dans un autre répertoire

Pour décompresser un fichier zip avec unzip dans un autre répertoire que celui actuel, utilisez l'option -d :

unzip fichier.zip -d /chemin/repertoire
unzip : Décompresser un fichier zip dans un autre répertoire

Décompresser un fichier zip protégé par mot de passe

Lorsqu'un fichier ZIP est protégé par un mot de passe, la commande unzip vous demande de saisir ce dernier pour pouvoir décompresser les fichiers compressés.

unzip fichier_image_pwd.zip
Archive:  fichier_image_pwd.zip
[fichier_image_pwd.zip] image2.img password:

Si le mot de passe est erroné, unzip vous demande de le saisir à nouveau, sinon il affiche le message incorrect password :

password incorrect--reenter:
password incorrect--reenter:
   skipping: image2.img              incorrect password

On peut aussi directement saisir le mot de passe dans le terminal à l'aide de l'option -P.
La syntaxe est la suivante :

unzip -P LeMotDePasse fichier.zip

Par exemple, si le mot de passe de l'archive fichier.zip est ez54dsf4ezdsf alors la commande unzip à utiliser est :

unzip -P ez54dsf4ezdsf fichier.zip
unzip : presser un fichier zip protégé par mot de passe
La saisie du mot de passe directement dans le terminal n'est pas recommandé pour des raisons de sécurité.

Exclure des fichiers lorsque vous décompressez un fichier ZIP

Pour exclure des fichiers ou des répertoires spécifiques de la décompression du ZIP, utilisez l'option -x suivi de la liste des fichiers d'archives séparées par l'espace que vous souhaitez exclure de l'extraction:

unzip fichier.zip -x fichier1-a-exclure fichier2-a-exclure

Par exemple pour exclure les fichiers avec l'extension txt :

unzip sauvegarde.zip -x "*.txt" -d /tmp/

Notez que ci-dessous, .txt~ est proposé à la décompression.

unzip : Exclure des fichiers lorsque vous décompressez un fichier ZIP

En ajoutant le wildcard après l'extension, on peut aussi exclure ce fichier :

[email protected]:~$ unzip sauvegarde.zip -x "*.txt*" -d /tmp/
Archive:  sauvegarde.zip
replace /tmp/image2.img? [y]es, [n]o, [A]ll, [N]one, [r]ename: N

Les expressions régulières sont permises, par exemple, pour exclure les fichiers se terminant par un chiffre et avec l'extension .img :

unzip sauvegarde.zip -x "*[0-9].img" -d /tmp/
Archive:  sauvegarde.zip
replace /tmp/image.img? [y]es, [n]o, [A]ll, [N]one, [r]ename: N
unzip : Exclure des fichiers lorsque vous décompressez un fichier ZIP

Écraser les fichiers existants

Pour décompresser un fichier ZIP en écrasant les fichiers existants sans aucune confirmation, utilisez l'option -o.

unzip -o fichier.zip
unzip : Écraser les fichiers existants

Décompresser un fichier zip sans écraser les fichiers existants

Si vous avez déjà décompressé une archive mais vous avez modifié ou supprimer les fichiers décompressés, vous pouvez décompresser à nouveau les fichiers modifiés.
Pour cela, on utilise l'option -n pour ne décompresser que les fichiers modifiés ou manquants :

unzip -n fichier.zip

Décompresser plusieurs fichiers ZIP

Vous pouvez utiliser des expressions régulières pour correspondre à plusieurs archives.

Par exemple pour décompresser tous les fichiers ZIP :

unzip '*.zip'

Énumérer le contenu d'un fichier ZIP

Pour lister le contenu d'un fichier, on utilise l'option -l pour list.

unzip -l sauvegarde.zip
Archive:  sauvegarde.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
250000000  2021-08-15 14:57   image2.img
 20000000  2021-08-15 14:58   image3.img
2500000000  2021-08-15 14:57   image.img
        0  2021-08-20 14:10   sauvegarde/
     7954  2021-08-20 13:59   sauvegarde/fichier.txt
     7954  2021-08-20 14:07   sauvegarde/fichier.txt~
      267  2021-08-14 14:12   Ubuntu.txt
---------                     -------
2770016175                     7 files
unzip : Énumérer le contenu d'un fichier ZIP

Vérifier et tester une archive ZIP avec unzip

Enfin vous pouvez tester une archive ZIP afin de s'assurer que le fichier ZIP n'est pas endommagé ou corrompu.
Par exemple après son téléchargement ou transfert grâce au contrôle de redondance cyclique (CRC).
Pour cela, on utilise l'option -t.
Lorsqu'aucune erreur n'est présente et que le fichier ZIP est valide, on obtient ceci :

unzip -t sauvegarde.zip
Archive:  sauvegarde.zip
    testing: image2.img               OK
    testing: image3.img               OK
    testing: image.img                OK
    testing: sauvegarde/              OK
    testing: sauvegarde/fichier.txt   OK
    testing: sauvegarde/fichier.txt~   OK
    testing: Ubuntu.txt               OK
No errors detected in compressed data of sauvegarde.zip.

Lorsque des erreurs sont détectées, on obtient ceci.
Le fichier impossible à décompressé est indiqué.

unzip -t images.zip
Archive:  images.zip
warning [images.zip]:  77 extra bytes at beginning or within zipfile
  (attempting to process anyway)
file #1:  bad zipfile offset (local header sig):  77
  (attempting to re-compensate)
    testing: Commande-netsh-exemple-utilisation.jpg
  error:  invalid compressed data to inflate
file #2:  bad zipfile offset (local header sig):  739423
  (attempting to re-compensate)
    testing: Comment-utiliser-ipconfig-sur-Windows-avec-exemples.jpg   OK
    testing: ERR_NAME_NOT_RESOLVED-Chrome-Edge-4ezfdsf2.jpg   OK
    testing: ERR_NAME_NOT_RESOLVED-Chrome-Edge.jpg   OK
    testing: Installer-unzip-apt-ubuntu-debian.jpg   OK
    testing: unzip-decompresser-fichier-ZIP-Linux-12eee5df.jpg   OK
    testing: unzip-decompresser-fichier-ZIP-Linux-exclusion-ezr541df.jpg   OK
    testing: unzip-decompresser-fichier-ZIP-Linux-exclusion.jpg   OK
    testing: unzip-decompresser-fichier-ZIP-Linux-mot-passe.jpg   OK
    testing: unzip-decompresser-fichier-ZIP-Linux-sdf45d.jpg   OK
    testing: unzip-decompresser-fichier-ZIP-Linux.jpg   OK
    testing: unzip-lister-contenu-fichier-zip.jpg   OK
At least one error was detected in images.zip.

Enfin lorsque le fichier ZIP est totalement corrompu et illisible ou si vous tentez de décompresser un fichier qui n'est pas au format ZIP :

unzip -t images.zip
Archive:  images.zip
  End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of images.zip or
        images.zip.zip, and cannot find images.zip.ZIP, period.
Vérifier et tester une archive ZIP avec unzip