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

contenu des fichiers compressés sans les décompresser
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
.gzsans 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,
zcatest un alias degzip -dc, mais sur d’autres (notamment BSD), il peut être un binaire différent. Toujours vérifier avecwhich zcatoufile $(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. Pour lire le contenu des fichiers compressés sans les décompresser.
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 demorepour les fichiers.gzzless: identique àless, mais pour les.gzznew: convertir des.Zen.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