Comment puis-je utiliser grep
pour afficher uniquement les noms de fichiers (aucune correspondance en ligne) sous Linux?
J'utilise généralement quelque chose comme:
find . -iname "*php" -exec grep -H myString {} \;
Comment puis-je simplement obtenir les noms de fichiers (avec des chemins), mais sans les correspondances? Dois-je utiliser xargs
? Je n'ai pas vu de moyen de le faire sur ma grep
page de manuel.
vim $(grep -rl Something app/)
Réponses:
L'option standard
grep -l
(c'est-à-dire un L en minuscule) pourrait le faire.De la norme Unix :
Vous n'avez également pas besoin
-H
dans ce cas.la source
grep -nrl "some text" .
lorsque je recherche du texte dans un ensemble de sous-dossiers de manière récursiveDepuis la
grep(1)
page de manuel:la source
Pour une recherche de fichier simple, vous pouvez utiliser les options
-l
et grep-r
:Toutes les recherches sont effectuées par grep. Bien sûr, si vous devez sélectionner des fichiers sur un autre paramètre, find est la bonne solution:
L'
execdir
option crée chaque commande grep pour chaque répertoire et concatène les noms de fichiers en une seule commande (+
).la source
Votre question Comment puis-je simplement obtenir les noms de fichiers (avec des chemins)
Votre exemple de syntaxe find. -iname "* php" -exec grep -H myString {} \;
Ma suggestion de commande
La sortie de cette commande sur mon OS Linux:
Comme vous avez besoin du nom de fichier avec chemin, profitez-en!
la source