web-dev-qa-db-fra.com

Nombre de fichiers contenant une chaîne donnée

Comment puis-je compter le nombre de fichiers (dans un répertoire) contenant une chaîne donnée en entrée dans bash/sh?

20
user4311

grep -l "string" * | wc -l recherchera "chaîne" dans le contenu de tous les fichiers du répertoire de travail et vous indiquer le nombre de correspondances.

33
Wolf

greps paramètre -l ne produira que les noms de fichiers qui correspondent à $PATTERN, wc peut les compter par la suite.

grep -l "$PATTERN" * | wc -l
9
wag

Cela fonctionne dans Bash avec N'importe quel nom de fichier :

grep -lZ "$pattern" * | tr -cd '\000' | wc -c

Explication:

  • grep 's -Z L'option imprime chaque résultat avec un séparateur ␀-octet. Ce caractère ne peut pas faire partie d'un nom de fichier. Nous pouvons donc simplement compter le nombre de séparateurs pour obtenir le nombre de fichiers.
  • Pour vous débarrasser des autres caractères de la sortie, nous supprimons tout simplement tout sauf les octets ␀ utilisant tr.
  • Ensuite, comptez simplement les personnages avec wc.
2
l0b0