Comment pouvez-vous grep et ne renvoyer que la ligne correspondante? c'est-à-dire que le chemin/nom du fichier est omis des résultats.
Dans ce cas, je souhaite rechercher dans tous les fichiers .bar du répertoire en cours, en recherchant le terme FOO.
find . -name '*.bar' -exec grep -Hn FOO {} \;
Pas besoin de find
. Si vous recherchez simplement un modèle dans un répertoire spécifique, cela devrait suffire:
grep -hn FOO /your/path/*.bar
Où -h
est le paramètre permettant de masquer le nom de fichier, à partir de man grep
:
- h, --no-filename
Supprime le préfixe des noms de fichier en sortie. C'est la valeur par défaut lorsqu'il n'y a qu'un seul fichier (ou qu'une seule entrée standard) à rechercher.
Notez que vous utilisiez
- H, --with-filename
Imprimez le nom du fichier pour chaque correspondance. C'est la valeur par défaut lorsqu'il y a plus d'un fichier à rechercher.
Il suffit de remplacer -H
par -h
. Vérifiez man grep
pour plus de détails sur les options
find . -name '*.bar' -exec grep -hn FOO {} \;
De 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.