292 votes

Grep sans afficher le chemin/le fichier : ligne

Comment utiliser grep pour ne renvoyer que la ligne correspondante ? c'est-à-dire que le chemin/le nom de fichier est omis des résultats.

Dans ce cas, je veux regarder tous les fichiers .bar dans le répertoire actuel, en recherchant le terme FOO

find . -name '*.bar' -exec grep -Hn FOO {} \;

473voto

fedorqui Points 42938

Pas besoin de find. Si vous cherchez simplement un motif dans un répertoire spécifique, cela devrait suffire :

grep -h FOO /votre/chemin/*.bar

-h est le paramètre pour masquer le nom de fichier, comme indiqué dans man grep :

-h, --no-filename

Supprime le préfixe des noms de fichiers dans la sortie. C'est la valeur par défaut lorsqu'il y a un seul fichier (ou seule l'entrée standard) à rechercher.

Il faut noter que vous utilisiez

-H, --with-filename

Affiche le nom du fichier pour chaque correspondance. C'est la valeur par défaut lorsqu'il y a plus d'un fichier à rechercher.

8voto

jkshah Points 5852

Remplacez simplement -H par -h. Consultez man grep pour plus de détails sur les options

find . -name '*.bar' -exec grep -hn FOO {} \;

7voto

TC1 Points 1608

De la page de l'homme:

-h, --no-filename
    Supprime le préfixe des noms de fichiers en sortie. C'est la valeur par défaut lorsqu'il
    n'y a qu'un seul fichier (ou seulement une entrée standard) à chercher.

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