12 votes

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

Je lance une commande find . -name pattern pour trouver quelques fichiers et j'aimerais obtenir de manière élégante le nombre total de lignes dans ces fichiers.

Comment puis-je y parvenir ?

12voto

Damian Powell Points 315

Si votre version de wc et find supporte les options nécessaires :

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

ce qui vous donnera des comptes par fichier ainsi qu'un total. Si vous voulez seulement le total :

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

Une autre option pour les versions de find qui le supportent :

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

2voto

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

Prend chaque fichier et l'exécute avec cat, puis redirige le tout vers wc en mode de comptage des lignes.

Ou, [non testé] avec un nom de fichier étrange:

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

1voto

g24l Points 889

Malheureusement, la sortie de :

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

insère des lignes supplémentaires. Pour obtenir un décompte fiable des lignes, vous devriez faire :

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

Ainsi, vous gérez correctement les espaces, obtenez un décompte des lignes pour chaque fichier et le décompte total des lignes, plus rapidement et avec style !!!

1voto

Teodor Anthony Points 11

Un autre moyen facile de trouver le nombre de lignes dans un fichier :

wc -l nom_fichier

Exemple :

wc -l monfichier.txt

-1voto

夏期劇場 Points 501

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

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X