Comment lister le contenu d'une archive zip sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce tutoriel vous guidera à travers le processus de listage du contenu d'une archive zip sur votre système Linux. Que vous soyez un développeur, un administrateur système ou simplement un utilisateur Linux curieux, comprendre comment travailler avec des fichiers zip à partir de la ligne de commande est une compétence précieuse. Nous aborderons les bases des archives zip, démontrerons les étapes pour lister leur contenu et fournirons des cas d'utilisation pratiques et des exemples pour vous aider à gérer vos fichiers plus efficacement.

Ceci est un Guided Lab, qui fournit des instructions étape par étape pour vous aider à apprendre et à pratiquer. Suivez attentivement les instructions pour compléter chaque étape et acquérir une expérience pratique. Les données historiques montrent que c'est un laboratoire de niveau débutant avec un taux de réussite de 100%. Il a reçu un taux d'avis positifs de 100% de la part des apprenants.

Installation des utilitaires ZIP

Pour travailler avec des archives zip sous Linux, nous devons avoir les utilitaires appropriés installés. Les principaux outils dont nous avons besoin sont les commandes zip et unzip.

Vérifions si ces utilitaires sont déjà installés sur votre système. Ouvrez un terminal et exécutez les commandes suivantes :

which zip
which unzip

Si ces commandes renvoient des chemins d'accès tels que /usr/bin/zip et /usr/bin/unzip, les outils sont déjà installés. Si vous ne voyez aucune sortie, nous devons les installer.

Sous Ubuntu, nous pouvons installer les utilitaires zip à l'aide du gestionnaire de paquets apt :

sudo apt update
sudo apt install -y zip unzip

Vérifions l'installation :

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

La sortie doit afficher les versions installées des utilitaires zip, comme ceci :

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.

Maintenant que nous avons les outils nécessaires installés, nous sommes prêts à créer et à travailler avec des archives zip.

Création d'une archive Zip d'exemple

Avant d'apprendre à lister le contenu d'une archive zip, créons un fichier zip d'exemple avec lequel travailler. Cela nous donnera un exemple pratique à utiliser tout au long de ce tutoriel.

Tout d'abord, créons un répertoire pour stocker nos fichiers d'exemple. Exécutez les commandes suivantes dans votre terminal :

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

Maintenant, créons quelques fichiers d'exemple avec un contenu différent :

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

Vérifions que nos fichiers ont été créés correctement :

ls -la
ls -la documents

Vous devriez voir une sortie similaire à :

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

Créons maintenant une archive zip contenant ces fichiers :

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

L'option -r indique à la commande zip d'inclure récursivement tous les fichiers et sous-répertoires.

Vous devriez voir une sortie similaire à :

  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)

Nous avons maintenant créé une archive zip nommée sample_archive.zip qui contient nos fichiers et répertoires d'exemple. Dans l'étape suivante, nous apprendrons à lister le contenu de cette archive.

Méthodes de base pour lister le contenu d'un fichier Zip

Maintenant que nous avons créé une archive zip d'exemple, apprenons à lister son contenu. La commande principale à cet effet est unzip avec diverses options.

Utilisation de l'option -l (Liste)

La façon la plus courante de lister le contenu d'une archive zip est d'utiliser la commande unzip avec l'option -l. Cette option affiche un tableau présentant des informations de base sur chaque fichier de l'archive.

Naviguons vers notre répertoire de démonstration zip et listons le contenu de notre archive d'exemple :

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

Vous devriez voir une sortie similaire à :

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

La sortie affiche :

  • La taille de chaque fichier en octets (bytes)
  • La date et l'heure de la dernière modification de chaque fichier
  • Le nom de chaque fichier ou répertoire
  • Un résumé indiquant la taille totale et le nombre de fichiers

Utilisation de l'option -Z (ZipInfo)

Une autre option consiste à utiliser l'option -Z, qui fournit une liste plus concise :

unzip -Z sample_archive.zip

Vous devriez voir une sortie similaire à :

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%

Ce format affiche les permissions de fichier, les informations de compression et d'autres détails sous une forme plus compacte.

Dans l'étape suivante, nous explorerons des options plus avancées pour lister le contenu des fichiers zip et comprendre comment interpréter les résultats.

Options avancées pour afficher le contenu d'un fichier Zip

Explorons maintenant quelques options avancées pour lister le contenu des archives zip, qui fournissent des informations plus détaillées sur les fichiers contenus dans l'archive.

Utilisation de l'option -v (Verbose)

L'option -v fournit des informations plus détaillées sur chaque fichier de l'archive, y compris la méthode de compression, le taux de compression et les valeurs CRC (Cyclic Redundancy Check) :

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

Vous devriez voir une sortie similaire à :

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

Cette sortie fournit les informations supplémentaires suivantes :

  • Method : La méthode de compression utilisée (dans ce cas, « Stored » signifie aucune compression)
  • Size : La taille compressée du fichier
  • Cmpr : Le taux de compression en pourcentage
  • CRC-32 : Une valeur de somme de contrôle (checksum) utilisée pour vérifier l'intégrité du fichier

Filtrage de la sortie avec Grep

Parfois, vous pouvez vouloir vérifier si un fichier spécifique existe dans une grande archive zip. Vous pouvez combiner la commande unzip -l avec grep pour rechercher des fichiers spécifiques :

unzip -l sample_archive.zip | grep "nested_file"

Cette commande affichera uniquement les entrées qui contiennent le texte « nested_file » dans leurs noms :

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

Compter les fichiers dans une archive Zip

Pour compter le nombre de fichiers dans une archive zip, vous pouvez utiliser la commande suivante :

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

Cette commande filtre les lignes d'en-tête et de pied de page et compte les lignes restantes, qui correspondent aux fichiers et répertoires de l'archive.

La sortie devrait être :

4

Vous savez maintenant comment utiliser les options avancées pour obtenir des informations plus détaillées sur le contenu des archives zip, rechercher des fichiers spécifiques et compter les fichiers dans une archive.

Cas d'utilisation et exemples pratiques

Maintenant que nous avons appris à lister le contenu des archives zip, explorons quelques scénarios pratiques où ces compétences peuvent être utiles. Nous allons travailler avec des exemples plus réalistes que vous pourriez rencontrer dans votre utilisation quotidienne de Linux.

Création d'une archive de sauvegarde (Backup)

La création de sauvegardes est un cas d'utilisation courant pour les archives zip. Créons une sauvegarde de nos fichiers de configuration :

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

## Create a dated backup archive (Créer une archive de sauvegarde datée)
zip -r backup_$(date +%Y%m%d).zip config/

La commande crée un fichier de sauvegarde avec la date du jour au format backup_AAAAMMJJ.zip.

Vérifions le contenu de notre sauvegarde :

unzip -l backup_*.zip

Vous devriez voir une sortie listant tous les fichiers de configuration que nous venons de sauvegarder.

Comparaison du contenu des archives

Parfois, vous devez comparer le contenu de deux archives zip pour voir ce qui a changé. Créons une deuxième sauvegarde avec quelques modifications :

## Modify a file (Modifier un fichier)
echo "port=9090" > config/port.conf
## Add a new file (Ajouter un nouveau fichier)
echo "debug=true" > config/debug.conf
## Create a new backup (Créer une nouvelle sauvegarde)
zip -r backup_new.zip config/

Comparons maintenant le contenu des deux fichiers de sauvegarde :

## List files in the first backup (Lister les fichiers dans la première sauvegarde)
echo "Original backup:"
unzip -l backup_*.zip | grep -v "Archive:" | grep -v "Length" | grep -v -e "-------"

## List files in the new backup (Lister les fichiers dans la nouvelle sauvegarde)
echo -e "\nNew backup:"
unzip -l backup_new.zip | grep -v "Archive:" | grep -v "Length" | grep -v -e "-------"

Vous remarquerez que la nouvelle sauvegarde inclut le fichier debug.conf supplémentaire, et que le fichier port.conf peut avoir une taille différente en raison de nos modifications.

Extraction de fichiers spécifiques

Vous pouvez utiliser les informations obtenues en listant le contenu des fichiers zip pour extraire uniquement des fichiers spécifiques :

## Create a directory for extraction (Créer un répertoire pour l'extraction)
mkdir -p extracted

## List the contents first (Lister le contenu d'abord)
unzip -l backup_new.zip

## Extract only the debug.conf file (Extraire uniquement le fichier debug.conf)
unzip backup_new.zip "config/debug.conf" -d extracted/

Vérifions que seul le fichier demandé a été extrait :

ls -la extracted/config/

Vous ne devriez voir que le fichier debug.conf dans le répertoire extrait.

En maîtrisant ces exemples pratiques, vous avez maintenant les compétences nécessaires pour gérer efficacement les archives zip dans divers scénarios réels. De la création de sauvegardes à la comparaison du contenu des archives et à l'extraction sélective de fichiers, ces techniques vous aideront à gérer vos fichiers plus efficacement sous Linux.

Résumé

Dans ce tutoriel, vous avez appris à travailler avec les archives zip sous Linux, en vous concentrant sur la liste de leur contenu. Voici un récapitulatif de ce que nous avons abordé :

  1. Installation des utilitaires zip requis sur votre système Linux
  2. Création d'exemples d'archives zip pour travailler avec
  3. Utilisation de commandes de base comme unzip -l pour lister le contenu des archives
  4. Exploration des options avancées telles que unzip -v pour des informations détaillées
  5. Application de ces compétences dans des scénarios pratiques tels que la création de sauvegardes (backups), la comparaison d'archives et l'extraction de fichiers spécifiques

Ces compétences sont précieuses pour la gestion des fichiers, le dépannage, les sauvegardes et diverses autres tâches sous Linux. Vous pouvez maintenant inspecter en toute confiance les archives zip sans les extraire, ce qui peut vous faire gagner du temps et de l'espace disque lorsque vous travaillez avec de grandes archives.

Quelques commandes clés à retenir :

  • unzip -l archive.zip : Liste de base du contenu de l'archive
  • unzip -v archive.zip : Liste détaillée (verbose) avec les détails de compression
  • unzip -Z archive.zip : Format de liste concis
  • unzip -l archive.zip | grep "filename" : Recherche de fichiers spécifiques

Avec ces commandes à votre disposition, vous pouvez gérer efficacement les archives zip dans votre environnement Linux.