¿Cómo contar todas las líneas de código en un directorio recursivamente en Windows?

21

En una máquina con Windows 7, me gustaría una forma rápida de determinar el número de líneas en todos los archivos en un árbol de directorios, para archivos de una extensión dada. ¿Hay alguna buena manera de hacer esto?

Quillbreaker
fuente
1
[¿Conoces un programa similar para wc (comando de conteo de palabras unix) en Windows?] [1] [1]: stackoverflow.com/questions/247234/…
Estoy familiarizado con wc, desearía que hubiera un equivalente W7.
Quillbreaker
@ (Quillbreaker) Hay. Todo el kit de herramientas de línea de comandos de Linux / Unix está disponible para TODAS las plataformas basadas en Windows. gnuwin32.sourceforge.net
shawty

Respuestas:

41

PowerShell es una opción.

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

Lines Words Characters Property
----- ----- ---------- --------
  168
maweeras
fuente
1
proporcione evidencia y una solución alternativa si lo anterior es incorrecto. Luego eliminaré / corregiré mi respuesta.
Maweeras
2
Si bien su respuesta es útil y aceptada por el OP, no responde correctamente la pregunta del OP. El problema está en el primer comando de su solución: dir -Recurse *.txtsolo procesará directorios cuyos nombres coincidan *.txt, mientras genera todos los archivos que encuentra en esos directorios y sus subárboles. Pero el OP quería procesar todos los directorios y generar solo los archivos que coinciden *.txt. Para hacer eso, lo usarías dir -Recurse -Include *.txt.
Cinnam
1
Esto es incorrecto, la ayuda de Windows en Get-ChildItem(que dires un alias de) afirma que Get-ChildItem –Path "*.txt" -Recursees todo lo que se necesita para obtener "todos los archivos .txt en el directorio actual y sus subdirectorios". enlace: technet.microsoft.com/library/hh849800.aspx
Andrew Leap
@AndrewLeap Lo probé nuevamente: en Win8 con PowerShell 4.0 funciona como usted dice. Sin embargo, en Win7 con PowerShell 2.0 tiene el problema que describí. dir -Recurse -Include *.txtparece tener los resultados deseados en ambas versiones.
Cinnam
¿Cómo podría alguien usar esto para registrar AMBOS * .txt Y * .java (total combinado)?
Jeremy Moritz
3

Para expandir la respuesta anterior de maweeras (lo siento, no hay suficiente representante para comentar), puede buscar múltiples extensiones de archivo pasando una matriz delimitada por comas a -Incluir.

Así por ejemplo:

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

Lo siguiente funciona en cmd:

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

O en un [.bat]:

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