Как посчитать все строки кода в каталоге рекурсивно в Windows?


21

На компьютере с Windows 7 я бы хотел быстро определить количество строк во всех файлах в дереве каталогов для файлов с заданным расширением. Есть ли полезный способ сделать это из коробки?


1
[Знаете ли вы похожую программу для wc (unix word count command) в Windows?] [1] [1]: stackoverflow.com/questions/247234/…

Я знаком с wc, хотелось бы, чтобы был W7 equivellant.
quillbreaker

@ (quillbreaker) Есть. Весь инструментарий командной строки Linux / Unix доступен для ВСЕХ платформ на базе Windows. gnuwin32.sourceforge.net
Shawty

Ответы:


41

PowerShell это вариант.

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

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

1
Пожалуйста, предоставьте доказательства и альтернативное решение, если вышеуказанное неверно. Затем я удалю / исправлю свой ответ.
Maweeras

2
Хотя ваш ответ полезен и принят ОП, он не дает правильного ответа на вопрос ОП. Проблема в первой команде вашего решения - dir -Recurse *.txtбудет обрабатывать только каталоги, имена которых совпадают *.txt, при выводе всех файлов, найденных в этих каталогах и их поддеревьях. Но ОП хотел обработать все каталоги, одновременно выводя только те файлы, которые совпадают *.txt. Для этого вы бы использовали dir -Recurse -Include *.txt.
Cinnam

1
Это неверно, справка Windows о состоянии Get-ChildItem(которое dirявляется псевдонимом) Get-ChildItem –Path "*.txt" -Recurse- это все, что нужно для получения «всех файлов .txt в текущем каталоге и его подкаталогах». ссылка: technet.microsoft.com/library/hh849800.aspx
Эндрю Лип

@ AndrewLeap Я только что проверил это снова - на Win8 с PowerShell 4.0 он работает, как вы говорите. Однако на Win7 с PowerShell 2.0 есть проблема, которую я описал. dir -Recurse -Include *.txtкажется, что желаемые результаты на обеих этих версиях.
Cinnam

Как кто-то может использовать это, чтобы зарегистрировать ОБА * .txt И * .java (общая сумма)?
Джереми Мориц

3

Чтобы расширить ответ maweeras, приведенный выше (извините, недостаточно повторений для комментариев), вы можете искать несколько расширений файлов, передавая массив с разделителями-запятыми в -Include.

Так, например:

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.