Zgrep
| Fiche express | |
|---|---|
| Domaine | Recherche dans des fichiers compressés |
| Commande | zgrep
|
| Contexte | Logs archivés/rotés (Logrotate), fichiers .gz
|
| Voir aussi | Grep (équivalent non compressé) |
zgrep recherche un motif dans un ou plusieurs fichiers compressés au format gzip, sans avoir à les décompresser manuellement au préalable. C'est un simple wrapper autour de grep qui décompresse le flux à la volée en interne — la syntaxe et les options (-i, -v, -E, -r, etc.) sont donc identiques à celles de grep.
Usage de base
zgrep "motif" fichier.gz # recherche simple dans une archive gzip
zgrep -i "erreur" acces.log.gz # insensible à la casse
zgrep -c "motif" fichier.gz # compte le nombre de lignes correspondantes
Recherche sur plusieurs archives (glob)
zgrep "motif" *.gz # recherche dans toutes les archives du répertoire courant
zgrep "motif" /var/log/*.log.*.gz # cible spécifiquement les logs rotés compressés
Comme avec grep, dès que plusieurs fichiers sont passés en argument, zgrep préfixe chaque ligne de résultat par le nom du fichier source — pratique pour repérer dans quelle archive (donc à quelle date de rotation) le motif est apparu.
La famille des outils "z"
D'autres utilitaires suivent le même principe : décompresser à la volée le contenu d'une archive gzip pour appliquer dessus l'équivalent d'une commande standard, sans étape de décompression manuelle intermédiaire.
zcat fichier.gz # équivalent de cat sur une archive gzip
zless fichier.gz # équivalent de less, pagination du contenu décompressé
zdiff fichier1.gz fichier2.gz # équivalent de diff entre deux archives (ou une archive et un fichier)
Ces commandes se comportent exactement comme leurs homologues non compressés (cat, less, diff) : mêmes options, même sortie, seule la source diffère.
Cas d'usage typique
Le cas d'usage le plus courant est la recherche dans des logs archivés/rotés par Logrotate : par défaut, seul le fichier de log courant est en clair, les anciens sont compressés en .gz (access.log.1.gz, access.log.2.gz, etc.). zgrep évite de devoir décompresser chaque archive une par une avant de pouvoir y chercher une trace :
zgrep "500 Internal" /var/log/nginx/access.log*.gz