Что такое Windows-эквивалент «wc -l»?

53

Что такое Windows-эквивалент команды Linux / Unix wc -l?

В основном, как вы подсчитываете количество строк, выводимых командой в командной строке Windows?

Найл
источник
Вы также можете использовать инструменты GnuWin32 и иметь wc(ну wc.exe...) gnuwin32.sourceforge.net
ivanivan

Ответы:

66

Команда Linux / Unix "line count" wc -lимеет эквивалент Windows find /c /v "".

Как это работает?

Согласно Рэймонду Чену из The Old New Thing , это функционирует как таковое, так как

Это особая особенность findкоманды, что нулевая строка обрабатывается как никогда не совпадающая.

Таким образом, inverted ( /v) count ( /c) эффективно подсчитывает все строки; следовательно, количество строк.

Пример использования

Чтобы подсчитать количество измененных файлов в рабочей копии Subversion:

svn status -q | find /c /v ""

Такая команда может использоваться, чтобы пометить сборку как «грязную», если счет не равен 0, т. Е. В рабочей копии есть незафиксированные изменения.

Чтобы получить количество строк всех ваших файлов Java:

(for /r %f in (*.java) do @type "%f") | find /c /v ""

Команда find /c /v ""также может быть добавлена ​​в командный файл, если требуется. Не забудьте дублировать %символы в пакетных файлах.


PowerShell

Рабочий эквивалент PowerShell Measure-Object -lineтребует некоторого дополнительного форматирования, например (список каталогов для простоты),

(ls | Measure-Object -line).Lines
Найл
источник
1
Спасибо, что поделился. Создана суть для справки - gist.github.com/a4ede7054b2ce5ee2708dd49bbd5a1a1
maheshwaghmare
11

В PowerShell, чтобы получить количество строк всех ваших Java-файлов:

type *.java | Measure-Object -line
user3808394
источник
3
добро пожаловать в суперпользователя: - вопрос был о CMD, а не powershell, если вы можете ответить на OP, отредактируйте свой ответ. это может помочь Как ответить , Как спросить , снова помогите центру, добро пожаловать в superuer, и я надеюсь, что вы вернетесь, спасибо
mic84
9
Спасибо @ mic84. Вопрос о командной строке Windows. И Microsoft пытается заменить CMD на PowerShell: networkworld.com/article/3143196/windows/… Так что это довольно полезный ответ.
user3808394
-2

findstr / n / r.

Это ограниченное регулярное выражение, поэтому / n показывает номер строки совпадения и "." это соответствует любому символу.

Гари Гаттен
источник
2
Вопрос не в том, как отобразить файл с номерами строк; вопрос в том, как определить количество строк в файле.
Скотт
Посмотрите на номер последней строки, и это количество строк в файле. Команда "find" тоже работает, но, возможно, findstr будет полезна в некоторых случаях. Я обнаружил, что это так.
Гари Гаттен
Это не очень удобный для пользователя ответ, особенно если учесть, что мы получили несколько других более прямых ответов. Но, если это ваш ответ, пожалуйста,  отредактируйте его,  чтобы сделать его более понятным и полным.
Скотт