47 votes

Recherche récursive de texte avec grep et motifs de fichiers

Compte tenu de cet exemple de structure de dossier :

/folder1/file1.txt
/folder1/file2.djd
/folder2/file3.txt
/folder2/file2.fha

Comment effectuer une recherche de texte récursive sur l'ensemble des *.txt fichiers avec grep de "/" ?

( "grep -r <pattern> *.txt" échoue lorsqu'il est exécuté à partir de "/", car il n'y a pas de .txt dans ce dossier).

63voto

Kyle Brandt Points 81077

Ma version de GNU Grep dispose d'un commutateur pour cela :

grep -R --include='*.txt' $Pattern

Décrit comme suit :

--include=GLOB

Rechercher uniquement les fichiers dont le nom de base correspond à GLOB (en utilisant des caractères génériques comme décrit dans --exclude).

20voto

Philip Reynolds Points 5118

Si vous avez un grand nombre de fichiers, il serait utile d'incorporer xargs dans la commande pour éviter l'erreur "Argument list too long".

find . -name '*.txt' -print | xargs grep <pattern>

2voto

santa Points 121

Vous pourrez peut-être utiliser votre zsh 's EXTENDED_GLOB option ( documents )

grep <pattern> **/*.txt

1voto

Andy Lester Points 740

Vous pouvez jeter un coup d'œil sur ack à l'adresse suivante http://betterthangrep.com qui permet de sélectionner les fichiers à rechercher par type de fichier.

0voto

Brian G Swanson Points 823
find . -name '*.txt' -type f -exec grep <pattern> {} \;

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