Comment puis-je compter le nombre de fichiers (dans un répertoire) contenant une chaîne donnée en entrée dans bash/sh?
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.
grep
s 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
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.tr
.wc
.