grep sans montrer chemin / fichier: ligne


234

Comment grep et renvoyez-vous uniquement la ligne correspondante? ie Le chemin / nom de fichier est omis des résultats.

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

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

Réponses:


375

Pas besoin find. Si vous recherchez simplement un modèle dans un répertoire spécifique, cela devrait suffire:

grep -hn FOO /your/path/*.bar

-hest le paramètre pour masquer le nom de fichier, à partir de man grep:

-h, --no-filename

Supprimez le préfixe des noms de fichiers en sortie. Il s'agit de la valeur par défaut lorsqu'il n'y a qu'un seul fichier (ou une seule entrée standard) à rechercher.

Notez que vous utilisiez

-H, --with-filename

Imprimez le nom du fichier pour chaque correspondance. Il s'agit de la valeur par défaut lorsqu'il y a plusieurs fichiers à rechercher.


le numéro de ligne peut-il être omis?
javadba

@javadba vous utilisez probablement un alias, tapez alias grep. Pour omettre l'alias, tapez\grep ...
fedorqui 'SO stop harming'

1
Oui, il utilisait l'alias.
javadba

8

Remplacez simplement -Hpar -h. Vérifiez man greppour plus de détails sur les options

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

6

Depuis la page de manuel:

-h, --no-filename
    Suppress the prefixing of file names on output. This is the default when there
    is only one file (or only standard input) to search.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.