Unix: Rechercher le contenu du fichier

1

Je trouve le find . -name "some-file" Cette commande est très utile pour lister tous les fichiers correspondant à un nom de fichier dans un dossier. Puis-je utiliser quelque chose de similaire pour répertorier tous les fichiers contient chaîne?

Si vous aviez besoin de trouver tous les fichiers d'un répertoire contenant une certaine chaîne de texte, qu'utiliseriez-vous?

Svish
la source

Réponses:

4

Si vous n'avez pas besoin de rechercher des sous-répertoires:

grep -l "string" <pattern>

(& lt; motif & gt; est un motif de fichier glob, par exemple * .txt)

Hugh Allen
la source
1
Je viens de découvrir ça, hehe. Je ne savais pas que grep pouvait également fonctionner sur des répertoires. Et si vous ajoutez -r il recherchera également des sous-répertoires! Par exemple grep -lr "string" .
Svish
2

Juste au cas où vous utiliseriez un système avec un grep strictement conforme à POSIX, c'est-à-dire qui ne prend pas en charge l'indicateur -r, mais que vous souhaitiez tout de même rediffuser dans des sous-répertoires, vous pouvez utiliser cette commande:

find . -type f -name "*.txt" -exec grep -l string {} +
jlliagre
la source