Comment puis-je compter le nombre de fichiers (dans un répertoire) contenant une chaîne donnée en entrée dans bash / sh?
Comment puis-je compter le nombre de fichiers (dans un répertoire) contenant une chaîne donnée en entrée dans bash / sh?
Réponses:
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.
awk '/pattern_to_look_for/ {s+=1; nextfile;} END {print s}' *
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.
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:
grep -lZ "$pattern" * | tr -cd '\000' | wc -c
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
.