Question Comment compter récursivement toutes les lignes de code dans un répertoire?


Nous avons une application PHP et voulons compter toutes les lignes de code sous un répertoire spécifique et ses sous-répertoires. Nous n'avons pas besoin d'ignorer les commentaires, car nous essayons juste d'avoir une idée approximative.

wc -l *.php 

Cette commande fonctionne très bien dans un répertoire donné, mais ignore les sous-répertoires. Je pensais que cela pourrait fonctionner, mais il revient 74, ce qui n'est certainement pas le cas ...

find . -name '*.php' | wc -l

Quelle est la syntaxe correcte à utiliser dans tous les fichiers?


1257
2017-08-31 17:42


origine


Réponses:


Essayer:

find . -name '*.php' | xargs wc -l

L'outil SLOCCount peut aider aussi bien.

Il va donner une ligne précise de lignes de code pour tout hiérarchie vous le pointez sur, ainsi que des statistiques supplémentaires.


2149
2017-08-31 17:50



Pour un autre one-liner:

( find ./ -name '*.php' -print0 | xargs -0 cat ) | wc -l

travaille sur des noms avec des espaces, ne sort qu'un seul nombre.


393
2017-08-31 20:26



Si vous utilisez une version décemment récente de Bash (ou ZSH), c'est beaucoup plus simple:

wc -l **/*.php

Dans le shell Bash, cela nécessite globstar option à définir, sinon le ** glob-operator n'est pas récursif. Pour activer ce paramètre, émettez

shopt -s globstar

Pour le rendre permanent, ajoutez-le à l'un des fichiers d'initialisation (~/.bashrc, ~/.bash_profile etc.).


349
2018-02-04 15:11



Vous pouvez utiliser le cloc utilitaire qui est construit dans ce but précis. Il rapporte chacun le nombre de lignes dans chaque langue, avec combien d'entre elles sont des commentaires, etc.

Exemple d'utilisation et de sortie:

$ cloc --exclude-lang=DTD,Lua,make,Python .
    2570 text files.
    2200 unique files.                                          
    8654 files ignored.

http://cloc.sourceforge.net v 1.53  T=8.0 s (202.4 files/s, 99198.6 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Javascript                    1506          77848         212000         366495
CSS                             56           9671          20147          87695
HTML                            51           1409            151           7480
XML                              6           3088           1383           6222
-------------------------------------------------------------------------------
SUM:                          1619          92016         233681         467892
-------------------------------------------------------------------------------

214
2018-02-25 18:29



Sur les systèmes de type UNIX, il existe un outil appelé cloc qui fournit des statistiques de code.

J'ai couru dans un répertoire aléatoire dans notre base de code, il dit:

      59 text files.
      56 unique files.                              
       5 files ignored.

http://cloc.sourceforge.net v 1.53  T=0.5 s (108.0 files/s, 50180.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               36           3060           1431          16359
C/C++ Header                    16            689            393           3032
make                             1             17              9             54
Teamcenter def                   1             10              0             36
-------------------------------------------------------------------------------
SUM:                            54           3776           1833          19481
-------------------------------------------------------------------------------

87
2018-05-16 16:03



Vous n'avez pas spécifié le nombre de fichiers ou la sortie souhaitée. Est-ce ce que vous recherchez:

find . -name '*.php' | xargs wc -l

29
2017-08-31 17:48



Encore une autre variation :)

$ find -name '*.php' | xargs cat | wc -l

Edit: cela donnera la somme totale, au lieu de fichier par fichier.


20
2017-08-01 12:01



Il y a un petit outil appelé slavount compter les lignes de code dans le répertoire. Il convient de noter qu'il fait plus que ce que vous voulez car il ignore les lignes / commentaires vides, regroupe les résultats par langage de programmation et calcule certaines statistiques.


17
2017-08-31 17:52



Plus commun et simple que pour moi, supposons que vous ayez besoin de compter les fichiers de différentes extensions de noms (disons, aussi indigènes)

wc `find . -name '*.[h|c|cpp|php|cc]'`

17
2017-10-06 03:23