A contagem total do número de linhas em um projeto, excluindo determinadas pastas ou arquivos
-
14-11-2019 - |
Pergunta
Usando o comando:
wc -l + `find . -name \* -print`
Você pode obter o número total de linhas de todos os arquivos dentro de uma pasta.
Mas imagine que você tem algumas pastas (por exemplo bibliotecas), o que você não quer contar as suas linhas, porque você não escreve.
Então, como você contar as linhas de um projeto de exclusão de determinadas pastas?
Solução
Com find
, você também pode "negar" a correspondência de condições com !
.Por exemplo, se eu quiser listar todas as .java
arquivos em um diretório, a exclusão daqueles que contém Test
:
find . -name "*.java" ! -name "*Test*"
Espero que isso ajude!
Editar:
Pelo jeito, a -name
predicado somente filtros de nomes de arquivo.Se você deseja filtrar os caminhos (assim você pode filtrar diretórios), utilização -path
:
find . -path "*.java" ! -path "*Test*"
Outras dicas
o colf sempre foi um grande amigo, sempre que eu precisar de contagem de linhas de src-código.Usando 2.6.29 kernel linux, como um exemplo:
$ 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
--------------------------------------------------------------------------------
você sempre pode excluí-los, listando os arquivos usando expressões regulares, por exemplo,
*.txt irá incluir apenas os arquivos txt e assim por diante...