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 ?
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 ?
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
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 !!!
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.