Comment compter le nombre total de lignes de fichiers trouvés?


10

J'exécute un find . -name patternpour trouver des fichiers, et j'aimerais obtenir avec élégance le nombre total de lignes dans ces fichiers.

Comment puis-je y parvenir?

Réponses:


9

Si votre version de wcet prend en findcharge les options nécessaires:

find . -name pattern -print0 | wc -l --files0-from=-

ce qui vous donnera un nombre de fichiers par fichier ainsi qu'un total. Si vous ne voulez que le total:

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

Une autre option pour les versions findqui le supportent:

find . -name pattern -exec cat {} + | wc -l 

2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Prend chaque fichier et le cats, puis dirige tout cela à travers le wcmode de comptage de lignes.

Ou, nom de fichier étrange [non testé] sûr:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l

1

Malheureusement, la sortie de:

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

insère des lignes supplémentaires. Pour obtenir un nombre de lignes fiable, vous devez:

find . -name "yourpattern" -print0 | xargs -0 wc -l

De cette façon, vous gérez les espaces correctement, obtenez un nombre de lignes pour chaque fichier et le nombre total de lignes, plus rapidement et avec style !!!


1
par exemple: recherche de temps. -name " .m" -exec cat '{}' \; | wc -l s'exécute en 4.878s et renvoie 227847 comme nombre de lignes. Mais le temps trouve. -name " .m" -print0 | xargs -0 wc -l s'exécute en 0.769s et renvoie le nombre de lignes approprié 126464.
g24l

1

Un autre moyen facile de trouver non. lignes dans un fichier:

wc -l filename

Exemple:

wc -l myfile.txt 

-1

Non testé, mais que diriez-vous de quelque chose comme:

cat `find . -name "searchterm" -print` | wc -l

Cela ne fonctionnera pas bien avec des chemins contenant des espaces ou des caractères qui déclenchent la globalisation.
Kamil Maciorowski

-2
wc -l `find -name filename`

fonctionnera efficacement.


… Ou pas, si les chemins contiennent des espaces ou des caractères qui déclenchent la globalisation.
Kamil Maciorowski

Et même si cela fonctionne, cela indique le nombre de lignes dans chaque fichier, ce qui n'est pas une manière élégante d'obtenir le total (comme demandé).
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.