Archives par mot-clé : zcat

zcat : le contenu des fichiers compressés sans les décompresser

zcat : lire le contenu des fichiers compressés sans les décompresser

zcat

 

La ligne de commande de GNU/Linux regorge d’outils discrets mais puissants. Après avoir exploré zgrep, qui permettait de rechercher du texte à l’intérieur de fichiers compressés .gz, penchons-nous aujourd’hui sur son cousin : zcat.

Si vous manipulez régulièrement des fichiers .gz, zcat devient vite un indispensable pour inspecter rapidement leur contenu sans les décompresser sur le disque.

Qu’est-ce que zcat ?

zcat est l’équivalent de la commande cat pour les fichiers compressés au format gzip (.gz). Il affiche simplement le contenu d’un fichier compressé dans le terminal. Contrairement à gunzip, qui extrait réellement le fichier, zcat ne touche pas au fichier d’origine et ne crée aucun fichier temporaire. Il décompresse « à la volée » pour une lecture directe.

Exemple basique

Prenons un fichier compressé :

$ ls
access.log.gz

Si vous souhaitez voir son contenu sans le décompresser :

$ zcat access.log.gz

Cela affichera le contenu dans le terminal, tout simplement. Si le fichier est trop long, vous pouvez le combiner avec less :

$ zcat access.log.gz | less

Ou pour voir uniquement les 10 premières lignes :

$ zcat access.log.gz | head

Pourquoi utiliser zcat ?

Voici quelques cas d’usage où zcat brille :

  • 🔍 Audit de logs compressés automatiquement chaque nuit (typiquement access.log.1.gz, syslog.2.gz, etc.).
  • 🧪 Tests rapides sur des archives .gz sans toucher aux originaux.
  • 🧼 Économie de disque, car aucune extraction temporaire n’est nécessaire.

Différences avec gunzip -c

Vous pouvez obtenir le même résultat avec :

$ gunzip -c access.log.gz

ou encore :

$ gzip -dc access.log.gz

Mais zcat reste plus court et plus naturel dans un pipeline shell.

💡 À noter : sur certains systèmes, zcat est un alias de gzip -dc, mais sur d’autres (notamment BSD), il peut être un binaire différent. Toujours vérifier avec which zcat ou file $(which zcat) si besoin.

Bonus : combiner zcat et grep

Même si zgrep est souvent plus simple, vous pouvez aussi chaîner zcat et grep manuellement :

$ zcat access.log.gz | grep "erreur 500"

Cela donne plus de contrôle (ex. : ajouter des --color, -C3, etc.).

Et avec plusieurs fichiers ?

Pas de problème, zcat accepte plusieurs arguments :

$ zcat logs/*.gz | grep "connexion refusée"

Idéal pour scanner des logs étalés sur plusieurs jours.

Conclusion

Tout comme zgrep, zcat est un outil minimaliste et efficace à ajouter à votre trousse à outils Linux. Il fait une seule chose, mais il le fait bien : lire le contenu d’un fichier .gz sans avoir à le décompresser manuellement.

En l’associant avec les classiques less, grep, awk, tail, etc., il devient un allié puissant pour l’administration système, l’analyse de logs et les scripts d’automatisation.


Pour aller plus loin ?  Explorez :

  • zmore : l’équivalent de more pour les fichiers .gz
  • zless : identique à less, mais pour les .gz
  • znew : convertir des .Z en .gz (plus rare aujourd’hui)

Besoin de scripts concrets ou de l’intégrer dans un workflow DevOps ou d’audit ? N’hésite pas à me le demander 😉 contactez-moi