Comment puis-je compter le nombre de fichiers (dans un répertoire) contenant une chaîne donnée en entrée dans bash / sh?
19
grep -l "string" * | wc -l
recherchera "chaîne" dans le contenu de tous les fichiers du répertoire de travail et vous indiquera le nombre correspondant.
grep -lr "string" directory | wc -l
Si vous ne voulez pas de recherche récursive, vous pouvez utiliser l'option find avec maxdepth:find directory -maxdepth 1 -type f -exec grep -l "string" {} + | wc -l
Notez que cette deuxième option est plus lente que grep.grep
Le paramètre s-l
ne sortira que les noms de fichiers qui correspondent$PATTERN
,wc
peut les compter ensuite.la source
Clarification: Ceci recherche le nombre de fichiers qui ont le "pattern_to_look_for" dans leur contenu et non dans leurs noms de fichiers (comme la réponse de Wag). À partir de votre question, il est difficile de dire ce que vous recherchez.
la source
find . ! -name . -prune -type f
(ne manquez pas les astuces). Cette commande répertorie uniquement les fichiers du dossier.Cela fonctionne dans Bash avec n'importe quel nom de fichier:
Explication:
grep
L'-Z
option de imprime chaque résultat avec un séparateur de ␀ octets. 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
.la source