2217 votes

Comment puis-je grep de manière récursive?

Comment puis-je récursivement grep tous les répertoires et sous-répertoires ?

find . | xargs grep "texthere" *

3197voto

Vinko Vrsalovic Points 116138
grep -r "texthere" .

889voto

christangrant Points 2023

Si vous connaissez l'extension ou le motif du fichier que vous voulez, une autre méthode est d'utiliser --include option:

grep -r --include "*.txt" texthere .

Vous pouvez aussi mentionner les fichiers à exclure avec --exclude.

Ag

Si vous avez souvent de la recherche par le biais de code, Ag (Argent Chercheur) est beaucoup plus rapide, alternative à grep, adaptée aux besoins de la recherche de code. Par exemple, il est récursive par défaut et automatiquement ignore les fichiers et les répertoires listés dans .gitignore, de sorte que vous n'avez pas à garder en passant la même lourd exclure les options de grep ou trouver.

170voto

VonC Points 414372

J'ai maintenant toujours utiliser (même sur Windows avec GoW -- Gnu sous Windows):

grep --include="*.xxx" -nRHI "my Text to grep" *

Qui comprend les options suivantes:

--include=PATTERN

Récursif de répertoires de fichiers de recherche de correspondance PATTERN.

-n, --line-number

Préfixe de chaque ligne de sortie avec le numéro de la ligne dans son fichier d'entrée.

-R, -r, --recursive

Lire tous les fichiers dans chaque répertoire, de manière récursive; c'est l'équivalent de l' -d recurse option.

-H, --with-filename

Imprimer le nom du fichier pour chaque match.

-I     

Processus un fichier binaire, comme si elle ne contient pas de données correspondantes;
c'est l'équivalent de l' --binary-files=without-match option.

Et je peux ajouter 'i' (-nRHIi), si je veux pas sensible à la casse des résultats.

Je peux obtenir:

/home/vonc/gitpoc/passenger/gitlist/github #grep --include="*.php" -nRHI "hidden" *
src/GitList/Application.php:43:            'git.hidden'      => $config->get('git', 'hidden') ? $config->get('git', 'hidden') : array(),
src/GitList/Provider/GitServiceProvider.php:21:            $options['hidden'] = $app['git.hidden'];
tests/InterfaceTest.php:32:        $options['hidden'] = array(self::$tmpdir . '/hiddenrepo');
vendor/klaussilveira/gitter/lib/Gitter/Client.php:20:    protected $hidden;
vendor/klaussilveira/gitter/lib/Gitter/Client.php:170:     * Get hidden repository list
vendor/klaussilveira/gitter/lib/Gitter/Client.php:176:        return $this->hidden;
...

141voto

Kurt Points 2018

Aussi:

find ./ -type f | xargs grep "foo"

mais grep -r est une meilleure réponse.

54voto

Andrew McGregor Points 7641

Ou d'installer d'accusé de réception, si vous voulez un moyen beaucoup plus rapide et est ce que font beaucoup.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X