2011-04-15 2 views
2

Je cherche des fichiers qui contiendraient la chaîne abc-def dans un dossier. J'utilise grep -l -r abc-def *, mais je ne suis pas sûr que ce soit le bon moyen (aucun fichier n'a été trouvé lorsque cette commande a été utilisée, mais peut-être que cela signifie simplement qu'aucun fichier ne contient la chaîne). J'ai également essayé grep -l -r 'abc-def' * (fichiers trouvés, mais quand j'ai cherché manuellement la chaîne, ils n'étaient pas là, seulement les parties individuelles de la chaîne, c'est-à-dire abc et def). Puisque le motif ne commence pas par un trait d'union, e ne fonctionnerait pas ici.grep rechercher une chaîne avec un tiret au milieu

Quelle serait la bonne façon de grep rechercher une chaîne avec un trait d'union au milieu?

+0

Puisqu'un trait d'union n'est pas un caractère spécial à shell ou grep (sauf à l'intérieur d'une classe de caractères), cela signifie simplement qu'aucun fichier ne contient la chaîne. – Neil

+0

@Neil: ok, merci beaucoup (j'avais juste besoin de m'assurer) :) – quarkdown27

Répondre

0

Essayez grep -r abc-def premier à voir quelles lignes correspondent. grep -r abc-def * et grep -r 'abc-def' * devrait vraiment donner le même résultat.

fgrep (f est pour «chaîne fixe») n'est pas nécessaire ici.

+0

juste pour rendre cette réponse plus complète, référez-vous au commentaire de Neil ci-dessus: trait d'union n'est pas un caractère spécial, peu importe si c'est dans le milieu de la chaîne – quarkdown27

1

cela devrait fonctionner:

fgrep -r -l 'abc-def' . 
Questions connexes