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 {} \;
Allan Thomas
la source

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.

fedorqui 'SO arrête de nuire'
la source
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 {} \;
jkshah
la source
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.
TC1
la source