Como posso contar as quebras de linha em uma pasta recursivamente?

0

Gostaria de aprender um método de linha de comando nativo para contar linhas de código em qualquer projeto salvo no Windows.

Dessa forma, não importa onde eu esteja trabalhando ou qual idioma / IDE eu estou trabalhando, saber o quão grande o projeto é pode ser alcançado com um comando.

Supondo que eu queira direcionar uma extensão de arquivo específica no diretório de destino (e todos os subdiretórios), qual pode ser uma maneira eficaz de contar recursivamente o número de quebras de linha dentro de uma pasta (e subpastas) da linha de comando do Windows?

    
por CuriousWebDeveloper 23.03.2015 / 16:21

5 respostas

1

Se tudo que você precisa é a contagem total de linhas da linha de comando do Windows

(for /r "c:\somewhere" %a in (*.c) do @type "%a")|find /c /v ""
    
por 24.03.2015 / 08:15
1

Como posso contar o número de linhas em arquivos em uma pasta recursivamente?

Use o seguinte arquivo de lote (countlines.cmd)

@echo off
Setlocal EnableDelayedExpansion
for /f "usebackq" %%a in ('dir /b /s %1')  do (
  echo processing file %%a
  for /f "usebackq" %%b in ('type %%a ^| find "" /v /c') do (
    echo line count is %%b
    set /a lines += %%b
    )
  )
echo total lines is %lines%

Notas:

  • O número total de linhas é armazenado em %lines% .
  • remova echo ... conforme apropriado para execução silenciosa.

Uso:

countlines filename_expression

Exemplo:

countlines *.java

produzirá o seguinte:

processing file F:\projects\test\foo.java
line count is 10
processing file F:\projects\test\test.java
line count is 106
processing file F:\projects\test\Wheel4Applet.java
line count is 350
total lines is 466

Leitura Adicional

por 23.03.2015 / 23:04
0

Isso contará todas as linhas como o Powershell define linhas no MyTargetPath

Get-Content (Get-ChildItem -Recurse -Path MyTargetPAth -file).FullName | measure -line

Basta configurar o MyTargetPath primeiro.

    
por 23.03.2015 / 16:39
0

Você consideraria uma ferramenta? (E você está ciente do link ?)

Eu uso este (embora possa não funcionar para o desenvolvimento da web):

SLOCCount is an easy-to-use tool that counts Source Lines of Code (SLOC). It auto-determines the language(s) (inc. C, C++, Ada, Assembly, shell, COBOL, C#, Fortran, Haskell, Java, LISP/Scheme, Perl, PHP, Python, Ruby, SQL). It also estimates cost & time.

O Linux tem uma palavra & contador de linha & existe uma implementação da Widows aqui .

Ou use findstr /R /N "^" file.txt (mais em este página ).

Ou, você pode encontrar sua resposta em questão de SuperUser extremamente semelhante.

    
por 24.03.2015 / 09:04
0

Se você estiver lidando com arquivos muito grandes, haverá um considerável ganho de desempenho se você usar o redirecionamento de arquivos versus o uso do PIPE. Teste com um arquivo de 437 MB que tinha 8.895.540 linhas. A tubulação para o comando find demorou 14,6 segundos. Usando o redirecionamento, levou apenas 5,4 segundos. Se você estiver contando arquivos menores, a diferença, obviamente, seria insignificante.

@echo off
set "lines=0"
for /f "usebackq" %%a in ('dir /b /s %1')  do (
  echo processing file %%a
  for /f %%b in ('find /V /C "" ^<"%%a"') do (
    echo line count is %%b
    set /a lines+=%%b
    )
  )
echo total lines is %lines%
    
por 14.12.2017 / 00:33