zcat : lire le 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
.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 degzip -dc
, mais sur d’autres (notamment BSD), il peut être un binaire différent. Toujours vérifier avecwhich zcat
oufile $(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 demore
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