Como contar todas as linhas de código em um diretório recursivamente no Windows?


21

Em uma máquina com Windows 7, eu gostaria de uma maneira rápida de determinar o número de linhas em todos os arquivos em uma árvore de diretórios, para arquivos de uma determinada extensão. Existe alguma maneira boa e imediata de fazer isso?


1
[Você conhece um programa semelhante para o wc (comando de contagem de palavras unix) no Windows?] [1] [1]: stackoverflow.com/questions/247234/…

Eu estou familiarizado com o wc, eu gostaria que houvesse um equivalente no W7.
quillbreaker

@ (Quillbreaker) Existe. Todo o kit de ferramentas de linha de comando Linux / Unix está disponível para TODAS as plataformas baseadas em Windows. gnuwin32.sourceforge.net
shawty

Respostas:


41

PowerShell é uma opção.

PS D:\Scratch\maweeras\superuser> dir -Recurse *.txt | Get-Content | Measure-Object -Line

Lines Words Characters Property
----- ----- ---------- --------
  168

1
forneça evidências e solução alternativa se acima estiver incorreto. Vou então excluir / corrigir minha resposta.
Maweeras

2
Embora sua resposta seja útil e aceita pelo OP, ela não responde corretamente à pergunta do OP. O problema está no primeiro comando da sua solução - dir -Recurse *.txtprocessará apenas os diretórios cujos nomes correspondem *.txt, ao mesmo tempo em que gera todos os arquivos encontrados nesses diretórios e em suas subárvores. Mas o OP queria processar todos os diretórios enquanto produzia apenas os arquivos correspondentes *.txt. Para fazer isso, você usaria dir -Recurse -Include *.txt.
Cinnam 26/05

1
Isso está incorreto, a ajuda do Windows Get-ChildItem(que diré um pseudônimo de) afirma que Get-ChildItem –Path "*.txt" -Recurseé tudo o que é necessário para obter "todos os arquivos .txt no diretório atual e seus subdiretórios". link: technet.microsoft.com/library/hh849800.aspx
Andrew Leap

@AndrewLeap Acabei de testá-lo novamente - no Win8 com PowerShell 4.0, ele funciona como você diz. No entanto, no Win7 com o PowerShell 2.0, ele tem o problema que descrevi. dir -Recurse -Include *.txtparece ter os resultados desejados em ambas as versões.
Cinnam

Como alguém usaria isso para verificar AMB * .txt AND * .java (total combinado)?
Jeremy Moritz

3

Para expandir a resposta das perguntas acima (desculpe, não é o suficiente para comentar), você pode procurar por várias extensões de arquivo, passando uma matriz delimitada por vírgula para -Include.

Então, por exemplo:

dir -Recurse -Include *.ts,*.tsx -Exclude *node_modules* | Get-Content | Measure-Object -Line


2

O seguinte funciona no cmd:

for %f in (*.TXT) do find /v /c "" "%f"

Ou em um [.bat]:

for %%f in (*.TXT) do find /v /c "" "%%f"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.