Как посчитать все строки кода в каталоге рекурсивно в Windows?
21
На компьютере с Windows 7 я бы хотел быстро определить количество строк во всех файлах в дереве каталогов для файлов с заданным расширением. Есть ли полезный способ сделать это из коробки?
Пожалуйста, предоставьте доказательства и альтернативное решение, если вышеуказанное неверно. Затем я удалю / исправлю свой ответ.
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.
Ответы:
PowerShell это вариант.
источник
dir -Recurse *.txt
будет обрабатывать только каталоги, имена которых совпадают*.txt
, при выводе всех файлов, найденных в этих каталогах и их поддеревьях. Но ОП хотел обработать все каталоги, одновременно выводя только те файлы, которые совпадают*.txt
. Для этого вы бы использовалиdir -Recurse -Include *.txt
.Get-ChildItem
(котороеdir
является псевдонимом)Get-ChildItem –Path "*.txt" -Recurse
- это все, что нужно для получения «всех файлов .txt в текущем каталоге и его подкаталогах». ссылка: technet.microsoft.com/library/hh849800.aspxdir -Recurse -Include *.txt
кажется, что желаемые результаты на обеих этих версиях.Чтобы расширить ответ maweeras, приведенный выше (извините, недостаточно повторений для комментариев), вы можете искать несколько расширений файлов, передавая массив с разделителями-запятыми в -Include.
Так, например:
источник
Я использую бесплатный и облегченный инструмент http://www.locmetrics.com
источник
Следующие работы в cmd:
Или в [.bat]:
источник