Come contare tutte le righe di codice in una directory in modo ricorsivo su Windows?


21

Su una macchina Windows 7, vorrei un modo rapido per determinare il numero di righe in tutti i file in un albero di directory, per i file di una determinata estensione. Esiste un modo pronto per farlo?


1
[Sai un programma simile per wc (word count comando unix) su Windows?] [1] [1]: stackoverflow.com/questions/247234/...

Conosco bene il wc, vorrei che ci fosse un equivalente W7.
Quillbreaker,

@ (quillbreaker) C'è. L'intero toolkit della riga di comando Linux / Unix è disponibile per TUTTE le piattaforme basate su Windows. gnuwin32.sourceforge.net
Shawty

Risposte:


41

powershell è un'opzione.

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

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

1
si prega di fornire prove e soluzioni alternative se sopra non è corretto. Quindi cancellerò / correggerò la mia risposta.
maweeras,

2
Sebbene la tua risposta sia utile e accettata dall'OP, non risponde correttamente alla domanda dell'OP. Il problema è nel primo comando nella tua soluzione: dir -Recurse *.txtelaborerà solo le directory i cui nomi corrispondono *.txt, mentre emette tutti i file che trova in quelle directory e nei loro sottotitoli. Ma l'OP voleva elaborare tutte le directory mentre emetteva solo i file corrispondenti *.txt. Per farlo, useresti dir -Recurse -Include *.txt.
Cinnam,

1
Questo non è corretto, la guida di Windows su Get-ChildItem(che dirè un alias di) afferma che Get-ChildItem –Path "*.txt" -Recurseè tutto ciò che è necessario per ottenere "tutti i file .txt nella directory corrente e nelle sue sottodirectory". collegamento: technet.microsoft.com/library/hh849800.aspx
Andrew Leap,

@AndrewLeap L'ho appena provato di nuovo - su Win8 con PowerShell 4.0 funziona come dici tu. Tuttavia su Win7 con PowerShell 2.0 presenta il problema che ho descritto. dir -Recurse -Include *.txtsembra avere i risultati desiderati su entrambe queste versioni.
Cinnam,

Come qualcuno lo userebbe per controllare ENTRAMBI * .txt E * .java (totale combinato)?
Jeremy Moritz,

3

Per espandere la risposta sopra maweeras (scusate, non abbastanza rep per commentare), è possibile cercare più estensioni di file passando un array delimitato da virgole a -Include.

Quindi per esempio:

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


2

Il seguente funziona in cmd:

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

O in un [.bat]:

for %%f in (*.TXT) do find /v /c "" "%%f"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.