Compter récursivement le nombre de lignes avec wc (Word Count)

Comme j’ai passé beaucoup de temps à programmer sur Txt2tags en juin et en juillet, j’ai été amené à comparer avec mon ami Carl le nombre de lignes de code de nos projets libres respectifs. Or, contrairement à grep, wc ne fournit pas d’option -r pour activer la récursivité.

Pour pallier cela, l’utilisation des classiques commandes Unix find et xargs est de rigueur. Ainsi, pour avoir le nombre total de lignes de tous les fichiers du répertoire faites :

$ find . -type f | xargs wc -l

Si, comme moi, seuls les fichiers python vous intéressent, vous pouvez ajouter un grep au milieu qui filtrera tous les noms de fichier se finissant par .py :

$ find . -type f | grep .py$ | xargs wc -l

Ou, encore plus simple, vous pouvez utiliser l’option -name de find :

$ find . -name "*.py" | xargs wc -l

Tags: , , ,

5 Responses to “Compter récursivement le nombre de lignes avec wc (Word Count)”

  1. Magic Banana dit :

    Even better: use SLOCCount (in the repository of your favorite GNU/Linux or BSD distribution): http://www.dwheeler.com/sloccount/

    It does all you want by default… and much more! In particular, it ignores the blank lines and the comments.

    • fgallaire dit :

      SLOCCount est très bien, mais c’est un logiciel supplémentaire à installer si on a les droits pour le faire. Les commandes Unix sont quant à elles toujours disponibles.

  2. Yoko dit :

    Une solution simple consiste à utiliser les globbings de bash :
    shopt -s globstar
    wc -l **/*.py

  3. […] d’y voir plus clair à l’aide de wc récursifs appliqués sur les répertoire contenant le code source des frameworks, et desquels j’ai […]

Leave a Reply