Existe-t-il une commande permettant de rechercher un mot-clé dans des fichiers sous un répertoire avec une extension spécifique?
La chaîne grep -irn "string" ./path
donne une recherche récursive pour tous les fichiers du répertoire ./path
. Mon besoin spécifique est de rechercher dans tous les fichiers sous ./path
avec une extension telle que*.h
"*.h"
guillemets.foobar.h
dans le répertoire actuel et essayez à nouveau.S et (activer) le sh ell opt ion
globstar
avec la commandeCela fera en sorte
**
qu'un composant de nom de fichier signifie tout ici et ci-dessous. Celapath/**
signifie donc tout dans lepath
répertoire et ses sous-répertoires . (Vous n'avez pas besoin de taper./
ici.) Ensuite, vous pouvez utiliserpour rechercher tous les
.h
fichiers dans et souspath
.Vous pouvez u nset options avec
shopt -u
.la source
la source
-exec
...+
c'est bien aussi."string"
dans votre réponse!Si vous pouvez installer quelque chose sur votre machine, je suggère d'utiliser ack .
Vous pouvez faire exactement ce dont vous avez besoin et bien plus encore. Pour votre cas d'utilisation, vous pouvez faire:
Pour rechercher les filtres de fichiers pris en charge de manière native, exécutez la commande
ack --help=type
.la source
Qu'en est-il de celui-ci?
Explication:
find
commandefind
commandefind
avec-exec
, c'est le spécificateur de fin de commandela source
"*.h"
marche? J'aurais pensé qu'il fallait l'être'*.h'
Si vous utilisez gnu grep, alors il y a un drapeau qui fait exactement ce que vous voulez:
bien que je ne pense pas qu'il soit disponible dans d'autres greps.
la source