Cómo listar el contenido de un archivo zip en Linux

LinuxBeginner
Practicar Ahora

Introducción

Este tutorial te guiará a través del proceso de listar el contenido de un archivo zip en tu sistema Linux. Ya seas un desarrollador, administrador de sistemas o simplemente un usuario curioso de Linux, comprender cómo trabajar con archivos zip desde la línea de comandos es una habilidad valiosa. Cubriremos los conceptos básicos de los archivos zip, demostraremos los pasos para listar su contenido y proporcionaremos casos de uso prácticos y ejemplos para ayudarte a administrar tus archivos de manera más eficiente.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Instalación de las utilidades ZIP

Para trabajar con archivos zip en Linux, necesitamos tener instaladas las utilidades apropiadas. Las herramientas principales que necesitamos son los comandos zip y unzip.

Comprobemos si estas utilidades ya están instaladas en tu sistema. Abre una terminal y ejecuta los siguientes comandos:

which zip
which unzip

Si estos comandos devuelven rutas como /usr/bin/zip y /usr/bin/unzip, entonces las herramientas ya están instaladas. Si no ves ninguna salida, necesitamos instalarlas.

En Ubuntu, podemos instalar las utilidades zip usando el gestor de paquetes apt:

sudo apt update
sudo apt install -y zip unzip

Verifiquemos la instalación:

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

La salida debería mostrar las versiones instaladas de las utilidades zip, similar a esto:

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.

Ahora que tenemos las herramientas necesarias instaladas, estamos listos para crear y trabajar con archivos zip.

Creación de un archivo Zip de ejemplo

Antes de aprender cómo listar el contenido de un archivo zip, creemos un archivo zip de ejemplo para trabajar. Esto nos dará un ejemplo práctico para usar a lo largo de este tutorial.

Primero, creemos un directorio para almacenar nuestros archivos de ejemplo. Ejecuta los siguientes comandos en tu terminal:

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

Ahora, creemos algunos archivos de ejemplo con contenido diferente:

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

Verifiquemos que nuestros archivos se crearon correctamente:

ls -la
ls -la documents

Deberías ver una salida similar a:

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

Ahora creemos un archivo zip que contenga estos archivos:

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

La opción -r le dice al comando zip que incluya recursivamente todos los archivos y subdirectorios.

Deberías ver una salida similar a:

  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)

Ahora hemos creado un archivo zip llamado sample_archive.zip que contiene nuestros archivos y directorios de ejemplo. En el siguiente paso, aprenderemos cómo listar el contenido de este archivo.

Métodos básicos para listar el contenido de un Zip

Ahora que hemos creado un archivo zip de ejemplo, aprendamos cómo listar su contenido. El comando principal para este propósito es unzip con varias opciones.

Usando la opción -l (Listar)

La forma más común de listar el contenido de un archivo zip es usar el comando unzip con la opción -l. Esta opción muestra una tabla que muestra información básica sobre cada archivo en el archivo.

Naveguemos a nuestro directorio de demostración zip y listemos el contenido de nuestro archivo de ejemplo:

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

Deberías ver una salida similar a:

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 salida muestra:

  • El tamaño de cada archivo en bytes
  • La fecha y hora en que se modificó por última vez cada archivo
  • El nombre de cada archivo o directorio
  • Un resumen que muestra el tamaño total y el número de archivos

Usando la opción -Z (ZipInfo)

Otra opción es usar la opción -Z, que proporciona un listado más conciso:

unzip -Z sample_archive.zip

Deberías ver una salida similar a:

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%

Este formato muestra los permisos de archivo, la información de compresión y otros detalles de una forma más compacta.

En el siguiente paso, exploraremos opciones más avanzadas para listar el contenido zip y comprender cómo interpretar los resultados.

Opciones avanzadas para ver el contenido de un Zip

Ahora exploremos algunas opciones avanzadas para listar el contenido de los archivos zip, que proporcionan información más detallada sobre los archivos dentro del archivo.

Usando la opción -v (Verbose - Verboso)

La opción -v proporciona información más detallada sobre cada archivo en el archivo, incluido el método de compresión, la relación de compresión y los valores CRC (Cyclic Redundancy Check - Comprobación de redundancia cíclica):

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

Deberías ver una salida similar a:

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

Esta salida proporciona la siguiente información adicional:

  • Method (Método): El método de compresión utilizado (en este caso, "Stored" significa que no hay compresión)
  • Size (Tamaño): El tamaño comprimido del archivo
  • Cmpr (Compresión): La relación de compresión como porcentaje
  • CRC-32: Un valor de suma de comprobación (checksum) utilizado para verificar la integridad del archivo

Filtrado de salida con Grep

A veces, es posible que desees verificar si existe un archivo específico en un archivo zip grande. Puedes combinar el comando unzip -l con grep para buscar archivos específicos:

unzip -l sample_archive.zip | grep "nested_file"

Este comando solo mostrará las entradas que contengan el texto "nested_file" en sus nombres:

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

Contar archivos en un archivo Zip

Para contar el número de archivos en un archivo zip, puedes usar el siguiente comando:

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

Este comando filtra las líneas de encabezado y pie de página y cuenta las líneas restantes, que corresponden a archivos y directorios en el archivo.

La salida debería ser:

4

Ahora sabes cómo usar opciones avanzadas para obtener información más detallada sobre el contenido de los archivos zip, buscar archivos específicos y contar los archivos en un archivo.

Casos de uso y ejemplos prácticos

Ahora que hemos aprendido cómo listar el contenido de los archivos zip, exploremos algunos escenarios prácticos donde estas habilidades pueden ser útiles. Trabajaremos con ejemplos más realistas que podrías encontrar en el uso diario de Linux.

Creación de un archivo de copia de seguridad (Backup)

La creación de copias de seguridad es un caso de uso común para los archivos zip. Creemos una copia de seguridad de nuestros archivos de configuración:

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 (Crear un archivo de copia de seguridad con fecha)
zip -r backup_$(date +%Y%m%d).zip config/

El comando crea un archivo de copia de seguridad con la fecha de hoy en el formato backup_AAAAAAMMDD.zip.

Verifiquemos el contenido de nuestra copia de seguridad:

unzip -l backup_*.zip

Deberías ver una salida que liste todos los archivos de configuración de los que acabamos de hacer una copia de seguridad.

Comparación del contenido del archivo

A veces, necesitas comparar el contenido de dos archivos zip para ver qué ha cambiado. Creemos una segunda copia de seguridad con algunos cambios:

## Modify a file (Modificar un archivo)
echo "port=9090" > config/port.conf
## Add a new file (Añadir un nuevo archivo)
echo "debug=true" > config/debug.conf
## Create a new backup (Crear una nueva copia de seguridad)
zip -r backup_new.zip config/

Ahora comparemos el contenido de los dos archivos de copia de seguridad:

## List files in the first backup (Listar archivos en la primera copia de seguridad)
echo "Original backup:"
unzip -l backup_*.zip | grep -v "Archive:" | grep -v "Length" | grep -v -e "-------"

## List files in the new backup (Listar archivos en la nueva copia de seguridad)
echo -e "\nNew backup:"
unzip -l backup_new.zip | grep -v "Archive:" | grep -v "Length" | grep -v -e "-------"

Notarás que la nueva copia de seguridad incluye el archivo adicional debug.conf, y el archivo port.conf podría tener un tamaño diferente debido a nuestras modificaciones.

Extracción de archivos específicos

Puedes usar la información obtenida al listar el contenido zip para extraer solo archivos específicos:

## Create a directory for extraction (Crear un directorio para la extracción)
mkdir -p extracted

## List the contents first (Listar el contenido primero)
unzip -l backup_new.zip

## Extract only the debug.conf file (Extraer solo el archivo debug.conf)
unzip backup_new.zip "config/debug.conf" -d extracted/

Verifiquemos que solo se extrajo el archivo solicitado:

ls -la extracted/config/

Deberías ver solo el archivo debug.conf en el directorio extraído.

Al dominar estos ejemplos prácticos, ahora tienes las habilidades para administrar eficazmente los archivos zip en varios escenarios del mundo real. Desde la creación de copias de seguridad hasta la comparación del contenido del archivo y la extracción selectiva de archivos, estas técnicas te ayudarán a administrar tus archivos de manera más eficiente en Linux.

Resumen

En este tutorial, has aprendido cómo trabajar con archivos zip en Linux, centrándote en listar su contenido. Aquí tienes un resumen de lo que hemos cubierto:

  1. Instalación de las utilidades zip necesarias en tu sistema Linux
  2. Creación de archivos zip de ejemplo para trabajar con ellos
  3. Uso de comandos básicos como unzip -l para listar el contenido del archivo
  4. Exploración de opciones avanzadas como unzip -v para obtener información detallada
  5. Aplicación de estas habilidades en escenarios prácticos como la creación de copias de seguridad (backups), la comparación de archivos y la extracción de archivos específicos

Estas habilidades son valiosas para la administración de archivos, la resolución de problemas (troubleshooting), las copias de seguridad y varias otras tareas en Linux. Ahora puedes inspeccionar con confianza los archivos zip sin extraerlos, lo que puede ahorrar tiempo y espacio en disco cuando trabajas con archivos grandes.

Algunos comandos clave para recordar:

  • unzip -l archive.zip: Listado básico del contenido del archivo
  • unzip -v archive.zip: Listado detallado (verbose) con detalles de compresión
  • unzip -Z archive.zip: Formato de listado conciso
  • unzip -l archive.zip | grep "filename": Búsqueda de archivos específicos

Con estos comandos a tu disposición, puedes administrar eficientemente los archivos zip en tu entorno Linux.