663 votes

Comment puis-je utiliser grep pour trouver un mot à l'intérieur d'un dossier?

Je suis juste très nouveau à l'aide de Linux, donc cela peut paraître vraiment stupide pour vous les gars. Donc, je vous demande d'être patient avec cette initiation.

Dans Windows, j'aurais fait une recherche pour trouver un mot à l'intérieur d'un dossier. De même, je veux savoir si un mot spécifique se produit à l'intérieur d'un répertoire contenant plusieurs sous-répertoires et fichiers. Mes recherches pour la syntaxe grep affiche je dois spécifier le nom de fichier, c'est à dire grep string filename.

Maintenant, je ne sais pas le nom de fichier, de sorte que dois-je faire? Un ami m'a suggéré de faire grep -nr string, mais je ne sais pas ce que cela signifie et je n'ai pas de résultats, avec elle, (il n'y a pas de réponse jusqu'à ce que je émettre un ctrl + c).

1043voto

Manish Ranjan Points 1288
grep -nr yourString* .

Le point à la fin recherche dans le répertoire courant, et -r des recherches sous-répertoires.

grep -nr MobileAppSer* . (Recherche MobileAppServlet.java ou .class ou .txt; MobileAppASer*.* est une autre façon de faire la même chose.)

149voto

usta Points 4536

grep -nr string my_directory

Remarques complémentaires: il répond à la syntaxe grep [options] string filename parce que dans les systèmes de type Unix, un répertoire est un type de fichier (il y a un terme "à un fichier régulier" pour faire spécifiquement référence à des entités qui sont appelé tout simplement "fichiers" dans Windows).

grep -nr string lit le contenu de la recherche à partir de l'entrée standard, c'est pourquoi il juste attend de vous, et s'arrête lorsque vous appuyez sur ^C (il s'arrêterait ^D, qui est la combinaison de touches pour la fin de fichier).

72voto

Quandary Points 12867

GREP: Global Regular Expression Print/Parser/Processeur/Programme.
Vous pouvez l'utiliser pour rechercher le répertoire courant.
Vous pouvez spécifier-R pour "récursif", ce qui signifie que le programme recherche dans tous les sous-dossiers, et leurs sous-dossiers, et leurs sous-dossiers, sous-dossiers, etc.

grep -R "your word" .

-n imprime le numéro de la ligne où elle correspond dans le fichier.
-i recherche insensible à la casse (majuscules/non-majuscules).

grep -inR "your regex pattern" .

40voto

mu is too short Points 205090

Il y a aussi:

find directory_name -type f -print0 | xargs -0 grep -li word

mais que peut-être un peu beaucoup pour un débutant.

find est un objectif général de répertoire walker/lister, -type f dire: "regardez pour les fichiers bruts plutôt que des annuaires et des canaux nommés et qu'avez-vous", -print0 moyens "de les imprimer sur la sortie standard en utilisant des caractères null comme délimiteurs". La sortie de find est envoyé à xargs -0 et qui saisit son entrée standard en morceaux (pour éviter la ligne de commande limites de longueur) à l'aide de caractères null comme un séparateur d'enregistrement (plutôt que la norme de retour à la ligne) et l'applique grep -li word pour chaque ensemble de fichiers. Sur l' grep, -l signifie "liste les fichiers qui correspondent" et -i signifie "casse"; habituellement, vous pouvez combiner le caractère unique des options de sorte que vous verrez -li plus souvent qu' -l -i.

Si vous n'utilisez pas -print0 et -0 ensuite vous pourrez rencontrer des problèmes avec les noms de fichiers contenant des espaces afin de les utiliser est une bonne habitude.

26voto

Nico Huysamen Points 4700
grep -nr search_string search_dir

va faire un RÉCURSIVE (qui signifie le répertoire et tous ses sous-répertoires), recherche pour le search_string. (comme correctement répondu par l'usta).

La raison pour laquelle vous ne recevaient pas tout anwers avec votre ami suggestion de:

grep -nr string

est car aucun répertoire n'est spécifié. Si vous êtes dans le répertoire que vous voulez faire de la recherche, vous devez effectuer les opérations suivantes:

grep -nr string .

Il est important d'inclure le caractère'.', cela indique grep pour rechercher CE répertoire.

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