Cuente el número total de líneas en un proyecto excluyendo ciertas carpetas o archivos
-
14-11-2019 - |
Pregunta
Usando el comando:
wc -l + `find . -name \* -print`
Puede obtener el número total de líneas de todos los archivos dentro de una carpeta.
Pero imagina que tienes algunas carpetas (por ejemplo, bibliotecas) en las que no quieres contar sus líneas porque no las escribiste.
Entonces, ¿cómo contarías las líneas de un proyecto excluyendo determinadas carpetas?
Solución
Con find
, también puedes "negar" las condiciones coincidentes con !
.Por ejemplo, si quiero enumerar todos los .java
archivos en un directorio, excluyendo aquellos que contienen Test
:
find . -name "*.java" ! -name "*Test*"
¡Espero que esto ayude!
Editar:
Por cierto, el -name
El predicado solo filtra nombres de archivos.Si desea filtrar rutas (para poder filtrar directorios), utilice -path
:
find . -path "*.java" ! -path "*Test*"
Otros consejos
CLOC siempre ha sido un gran amigo siempre que necesito contar líneas de código SRC.Usando 2.6.29 Linux Kernel como ejemplo:
$ 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
--------------------------------------------------------------------------------
Siempre podría excluirlos al listar los archivos utilizando expresiones regulares, por ejemplo,
*. TXT incluirá solo archivos TXT y así sucesivamente ...