本文主体来自这篇外文文章的翻译。原文中有一个副标题:“如何简单地用Windows自带的FIND在CMD.exe中计算行数”
当我们在命令行环境中工作时,能计算其它工具输出内容的行数有时候是很有用的。
很多Unix/Linux操作系统包含一个叫wc的工具,这个工具有可以接受不不少选项,
在Windows上没有类似的这个工具的替代品,但是Windows CMD提示符中存在一
个可以实现差不多功能的工具。
在这边短文中,我们会明白如何用FIND在cmd中计算行数。
这个工具,实际上跟Unix系统的grep比较像,而且早就存在在Windows操作系统上(Dos时代就有了),
因为在所有不同版本的Windows版本上都有这个工具,所以我们用起来也比较方便(不用去安装额外的东西)。
例如,假设有个Windows Server,我们想知道当前有多少个TCP sessions处于激活(Active)状态, 我们可以
用netstat命令,将这个命令的输出重定向给FIND命令来获得状态为established sessions的行,命令如下:
netstat -nao | find /i “estab”
上面那个命令的输出可能会有很多行,也许我们关心的只是输出的sessions的数量,
只要在上面的命令行填一个/c的命令开关,就可以得到TCP 处于激活状态的sessions了。
看上面的图,我们仍然用同样的过滤器(就是那个"estab"),只是添加了一个/c的选项,输出的结果就只有行数了。
另外的一个例子如下,显示本地缓存的dns记录。
/c选项也可以用来计算命令输出的所有行。例如,我们可能想知道在活动目录中的组数。
将之前命令的输出结果定向给 FIND /v "" /c (它的意思是看下所有不包含字符串""的行),
也就是说,计算所有行!
通过使用/v “” ,我们会查询到所有非空行,这在输出的所有字符串非常不同的情况下很有用。
要是你用过Unix上的wc,那么上面的命令就相当于 wc -l
另一个例子,Event Logger命令(wevtutil)会输出很多行,如果只想知道在当前机器上不同日志的数量,只需要将他们的输出重定向给
FIND /v "" /c即可。
最后一个例子。有一个日志文件,文件中可能有上千行相似内容,我们想快速的知道包含某个关键词的行数:
TYPE C:\Windows\Schedlgu.txt | FIND /i “task failure” /c
作者最后说,现在windows上存在一些UNIX工具的实现,但是能够使用windows自带的工具来完成某些任务仍然是很有用的!
(尽管像find这样的工具已经成为过去了!!!)