Cómo usar zcat y zless para leer archivos comprimidos sin extraerlos en Linux

Introducción

En el día a día de un administrador de sistemas o un desarrollador, es frecuente encontrarse con archivos comprimidos con gzip que contienen logs, configuraciones o código fuente. En lugar de descomprimir cada archivo para inspeccionar su contenido, Linux ofrece herramientas que permiten leerlos directamente desde la línea de comandos. Dos de las más útiles son zcat y zless, que actúan como versiones conscientes de la compresión de los clásicos cat y less. En este artículo exploraremos qué hacen, cómo funcionan y cuándo es preferible usar cada una, con ejemplos prácticos que podrás aplicar inmediatamente.

¿Qué son zcat y zless?

zcat es una utilidad que pertenece al paquete gzip y funciona exactamente como el comando cat, pero está diseñada para leer archivos que han sido comprimidos con gzip (extensión .gz). Cuando se invoca zcat sobre un archivo .gz, la herramienta lo descomprime al vuelo y envía el resultado a la salida estándar, sin crear ningún archivo temporal en el disco. Por su parte, zless es una variante de less que también trabaja directamente con archivos comprimidos: permite navegar hacia adelante y atrás dentro del contenido, buscar patrones y desplazarse página a página, todo sin necesidad de descomprimir previamente el archivo. Ambos comandos conservan los mismos flags y opciones que sus contrapartes sin compresión, lo que los hace intuitivos para usuarios acostumbrados a cat y less.

Cómo funcionan

Internamente, tanto zcat como zless utilizan la biblioteca de descompresión de gzip para leer los datos comprimidos y convertirlos en un flujo de bytes legibles en tiempo real. Cuando el kernel recibe la llamada de lectura, la herramienta intercepta los bloques comprimidos, los descomprime en memoria y los envía a la salida estándar (en el caso de zcat) o a la interfaz de less (en el caso de zless). Este proceso es totalmente transparente para el usuario y no requiere privilegios especiales, ya que solo necesita permisos de lectura sobre el archivo .gz. Además, ambos comandos pueden trabajar con entradas estándar: si se les pipea un flujo de datos comprimidos, lo procesarán del mismo modo, lo que los hace muy útiles en cadenas de comandos donde se combina, por ejemplo, find, grep o awk con archivos .gz.

Ejemplos prácticos de zcat

  • Mostrar el contenido de un log comprimido: zcat /var/log/syslog.gz | head -20 muestra las primeras veinte líneas del archivo syslog.gz sin necesidad de crear una copia descomprimida; esto es ideal para revisar rápidamente eventos recientes en servidores de producción.
  • Combinar zcat con grep para buscar patrones: zcat /usr/share/doc/package/changelog.D.gz | grep -i ‘fix’ permite localizar todas las menciones de la palabra ‘fix’ dentro del changelog comprimido, ahorrando tiempo al evitar la descompresión completa del archivo.
  • Usar zcat en tuberías con awk para extraer columnas: zcat acceso.log.gz | awk -F’ ‘ ‘{print $1,$4}’ > ips_fechas.txt procesa el log de acceso comprimido, imprimiendo la dirección IP y la marca de tiempo en un archivo de texto plano, todo sin crear archivos intermedios.

Ejemplos prácticos de zless

  • Navegar un manual comprimido: zless /usr/share/man/man1/grep.1.gz permite desplazarse hacia arriba y abajo, buscar con /patrón y salir con q, tal como se haría con less en un archivo sin comprimir.
  • Revisar un archivo de configuración comprimido en /etc: zless /etc/nginx/nginx.conf.gz facilita la lectura de directivas, permite saltar a secciones específicas con :número de línea y realizar búsquedas hacia adelante o atrás sin descomprimir.
  • Usar zless en combinación con otros comandos: por ejemplo, encontrar un archivo comprimido con find y abrirlo directamente: find /var/log -name ‘*.gz’ -exec zless {} \\; abre cada log comprimido en less para inspección inmediata.

Ventajas y limitaciones

La principal ventaja de zcat y zless es la eficiencia: evitan la creación de archivos temporales y reducen el uso de espacio en disco, lo que resulta especialmente valioso en sistemas con almacenamiento limitado o en entornos de contenedores donde cada byte cuenta. Además, permiten trabajar con flujos de datos en tiempo real, integrándose sin fricción en tuberías y scripts de automatización. Sin embargo, tienen algunas limitaciones: no pueden modificar el contenido comprimido (para eso se necesita descomprimir, editar y volver a comprimir), y su rendimiento depende de la velocidad de la CPU para descomprimir al vuelo; en archivos muy grandes o en hardware modestamente potente, la latencia puede ser perceptible. Finalmente, solo funcionan con el formato gzip; otros algoritmos como bzip2 o xz requieren sus propias variantes (bzcat, bzless, xzcat, xzless).

Conclusión

En resumen, zcat y zless son herramientas esenciales para cualquier usuario de Linux que trabaje con archivos comprimidos. Permiten leer, buscar y navegar el contenido sin el overhead de descomprimir y sin ocupar espacio adicional en disco. Su sintaxis es prácticamente idéntica a la de cat y less, lo que reduce la curva de aprendizaje y facilita su adopción en scripts y flujos de trabajo diarios. Si aún no los has incorporado a tu repertorio de comandos, pruébalos hoy y descubre cuánto pueden agilizar tus tareas de administración y depuración.

Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional para Francesc Roig francesc@vivaldi.net .

EspañolesEspañolEspañol