J'ai une hiérarchie de répertoires qui contient de nombreux .gz
fichiers. Je veux pouvoir les récursivement les grep pour la chaîne "foo". D'après ce que j'ai lu en ligne, ce qui suit devrait fonctionner:
zgrep -R -H "foo" .
Cependant, cela ne renvoie jamais aucun résultat. Si je remplace le point par le nom d'un fichier, cela fonctionne. Par exemple,
zgrep -R -H "foo" myFile.gz
cependant, évidemment, cela ne sera plus récursif.
Je sais que "foo" se trouve dans certains fichiers car la commande suivante renvoie de nombreux résultats:
find . -iname "*.gz" | xargs zgrep "output" | less
Est-ce que quelqu'un sait pourquoi ma commande zgrep récursive ne fonctionne pas? Je suis sur une boîte Linux RHEL
la source
zsh: no matches found: *.gz
La façon dont je fais habituellement est:
Si cette commande retourne "Argument list too long", essayez cette méthode:
la source
Vous devez installer zutils. Ceci remplacera le zgrep par défaut et limité sur votre système par un autre récursif.
Sur les systèmes debian vous exécutez
apt-get install zutils
alors vous pouvezzgrep -rH myword .
et utiliser la plupart des autres paramètres de grep que vous connaissez et amour.la source
Utilisez tamiser - c'est super rapide .
sift -z foo
-z
est utilisé pour décompresser gzips, il descend par défaut dans les sous-répertoires. Affiche également les noms de fichiers par défaut (votre-H
option).PS Grâce à votre question, j'ai découvert cet outil aujourd'hui. En plus de la fonctionnalité dont vous avez besoin, j’ai une accélération 5x de certains journaux de production par rapport à
zgrep
.la source