Compter le nombre total de lignes dans un projet à l'exclusion de certains dossiers ou fichiers
-
14-11-2019 - |
Question
Utilisation de la commande:
wc -l + `find . -name \* -print`
Vous pouvez obtenir le nombre total de lignes de tous les fichiers dans un dossier.
Mais imaginez que vous avez des dossiers (par exemple les bibliothèques), que vous ne voulez pas compter leurs lignes parce que vous ne les avez pas écrites.
Alors, comment comptez-vous les lignes d'un projet à l'exclusion de certains dossiers?
La solution
Avec find
, vous pouvez également "nier" des conditions de correspondance avec !
. Par exemple, si je veux répertorier tous les .java
fichiers dans un répertoire, à l'exclusion de ceux qui contiennent Test
:
find . -name "*.java" ! -name "*Test*"
J'espère que cela t'aides!
Éditer:
Au fait, le -name
prédicat uniquement les noms de fichiers. Si vous souhaitez filtrer les chemins (afin que vous puissiez filtrer les répertoires), utilisez -path
:
find . -path "*.java" ! -path "*Test*"
Autres conseils
lic a toujours été un grand ami chaque fois que j'ai besoin de compter les lignes du code SRC. Utilisation du noyau Linux 2.6.29 comme exemple:
$ cloc .
26667 text files.
26357 unique files.
2782 files ignored.
http://cloc.sourceforge.net v 1.50 T=168.0 s (140.9 files/s, 58995.0 lines/s)
--------------------------------------------------------------------------------
Language files blank comment code
--------------------------------------------------------------------------------
C 11435 1072207 1141803 5487594
C/C++ Header 10033 232559 368953 1256555
Assembly 1021 35605 41375 223098
make 1087 4802 5388 16542
Perl 25 1431 1648 7444
yacc 5 447 318 2962
Bourne Shell 50 464 1232 2922
C++ 1 205 58 1496
lex 5 222 246 1399
HTML 2 58 0 378
NAnt scripts 1 85 0 299
Python 3 62 77 277
Bourne Again Shell 4 55 22 265
Lisp 1 63 0 218
ASP 1 33 0 136
awk 2 14 7 98
sed 1 0 3 29
XSLT 1 0 1 7
--------------------------------------------------------------------------------
SUM: 23678 1348312 1561131 7001719
--------------------------------------------------------------------------------
Vous pouvez toujours les exclure en répertoriant les fichiers en utilisant des expressions régulières, par exemple,
* .txt n'inclura que des fichiers txt et ainsi de suite ...