2 votes

Comment reproduire l'option --recursive de grep dans une ancienne version de grep

Je travaille sur un ancien système UNIX dont les grep n'a pas l'option -r/--récursif.

Je dois trouver une erreur provoquée par notre application, mais je ne sais pas dans quel fichier journal notre application écrit les erreurs. Cependant, je sais que le fichier journal se trouve quelque part dans /opt . Je veux donc trouver FooErrorMessage sous /opt en *.log . Voici ce que j'ai essayé :

find /opt | xargs grep FooErrorMessage

-- mais cela ne fonctionne pas, et je ne sais pas où spécifier que je veux seulement *.log dans la commande.

1voto

Corey Points 504

Vous pouvez également le faire avec l'option exec de find au lieu de xargs

find /opt -exec grep "chose que vous cherchez" {}

1voto

Jeffrey Cohen Points 191

GNU grep possède sa propre option "recurse" :

 grep -R foo /path/to/directory

Pour extraire des fichiers d'un modèle particulier, il est préférable d'utiliser la commande find y xargs :

 find /path/to/directory -name \*.log -print0 | xargs -0 grep foo

0voto

Sven Points 95985
find /opt -name *.log | xargs grep yourstring

0voto

Rekk72 Points 21

À moins que les sous-répertoires ne soient situés à plusieurs niveaux de profondeur, grep *, grep / et grep / /* est facile à retenir et difficile à taper de travers...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X