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

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

Я хотел бы изучить собственный метод командной строки для подсчета строк кода в любом проекте, сохраненном в Windows.

Таким образом, независимо от того, где я работаю и с каким языком/IDE я работаю, с помощью одной команды можно определить, насколько велик проект.

Предположим, что я хочу указать конкретное расширение файла в целевом каталоге (и всех подкаталогах). Какой может быть эффективный способ рекурсивного подсчета количества переносов строк в папке (и подпапках) из командной строки Windows?

решение1

Если вам нужно только общее количество строк из командной строки Windows

(for /r "c:\somewhere" %a in (*.c) do @type "%a")|find /c /v ""

решение2

Как рекурсивно подсчитать количество строк в файлах в папке?

Используйте следующий пакетный файл (countlines.cmd)

@echo off
Setlocal EnableDelayedExpansion
for /f "usebackq" %%a in (`dir /b /s %1`)  do (
  echo processing file %%a
  for /f "usebackq" %%b in (`type %%a ^| find "" /v /c`) do (
    echo line count is %%b
    set /a lines += %%b
    )
  )
echo total lines is %lines%

Примечания:

  • Общее количество строк хранится в %lines%.
  • echo ...при необходимости удалите для обеспечения бесшумной работы.

Использование:

countlines filename_expression

Пример:

countlines *.java

выведет следующее:

processing file F:\projects\test\foo.java
line count is 10
processing file F:\projects\test\test.java
line count is 106
processing file F:\projects\test\Wheel4Applet.java
line count is 350
total lines is 466

Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • реж- Отображение списка файлов и подпапок.
  • находить- Поиск текстовой строки в файле и отображение всех строк, где она найдена.
  • для /ф- Циклическая команда по результатам другой команды.

решение3

Это позволит подсчитать все строки, которые Powershell определяет в MyTargetPath.

Get-Content (Get-ChildItem -Recurse -Path MyTargetPAth -file).FullName | measure -line

Сначала настройте MyTargetPath.

решение4

Если вы имеете дело с очень большими файлами, то при использовании перенаправления файлов по сравнению с использованием PIPE вы получите значительный прирост производительности. Тестирование с файлом размером 437 МБ, содержащим 8 895 540 строк. Передача по конвейеру в команду find заняла 14,6 секунды. При использовании перенаправления потребовалось всего 5,4 секунды. Если вы считаете файлы меньшего размера, разница, конечно, будет незначительной.

@echo off
set "lines=0"
for /f "usebackq" %%a in (`dir /b /s %1`)  do (
  echo processing file %%a
  for /f %%b in ('find /V /C "" ^<"%%a"') do (
    echo line count is %%b
    set /a lines+=%%b
    )
  )
echo total lines is %lines%

Связанный контент