Je voudrais lister de manière récursive et unique les fichiers qui contiennent le mot donné.
Exemple : Vérifier le mot «vérifier», je le fais normalement est un grep
$ grep check * -R
Mais comme il y a beaucoup d'occurrences de ce mot, j'obtiens beaucoup de sortie. J'ai donc juste besoin de lister les noms de fichiers qui contiennent le mot de recherche donné. Je suppose qu'un truc avec find
et xargs
suffirait ici, mais pas sûr.
Des idées?
la source
grep -rl "text to find" "/usr/share"
et cela a très bien fonctionné!Vous ne voudrez probablement pas utiliser l'
-R
option qui avec les versions modernes de GNUgrep
suit les liens symboliques lors de la descente des répertoires. Utilisez-r
plutôt l' option qui, depuis la version 2.12 (avril 2012), ne suit plus les liens symboliques.Si votre grep n'est pas celui de GNU, ou est plus ancien que la version 2.12, ou si vous avez besoin que votre code soit portable sur des systèmes GNU non-saignants, utilisez la
find
commande ci-dessus.Sinon, vous pouvez faire:
Ne pas utiliser
*
(car cela omettrait les fichiers cachés dans le répertoire actuel (et dans le répertoire actuel uniquement) et causerait des problèmes pour les fichiers dont le nom commence par a-
), évitez de passer des options après des arguments car cela ne garantit pas de fonctionner selon le environnement et n'est pas portable.la source
Essaye ça:
Quant aux
grep
drapeaux ...-c
renverra un nom de fichier suivi de: et d'un nombre indiquant combien de fois la chaîne de recherche apparaît dans le fichier donné.-v
prendra la sortie de la premièregrep
recherche, filtrera les fichiers avec des résultats nuls et imprimera uniquement les fichiers avec des résultats non nuls.la source
:0
. C'est mieuxgrep -v ':0$'
. Même cela étouffera les chemins d'accès qui contiennent des sauts de ligne.grep -rin "whatToFind" locationToFInd
par exemple $ grep -rin "vihaan".
recherchera et listera récursivement les noms de fichiers et les lignes correspondantes qui contiennent "vihaan", "." fait référence au répertoire courant.
la source
recherche dans le répertoire courant. Pour rechercher à partir de la racine, spécifiez
/
au lieu de.
la source
grep -lR "text-to-find" <where-to-find>
fonctionne également très bien.par exemple,
grep -lR "NAVIGATE" .
où nous trouvons le motNAVIGATE
dans le.
répertoire courant.la source
Donnez-vous la liste des
.q
fichiers contient le mot-clétrim
la source