find /i "ora-" *.log

我对findstr是如此的依赖,以至于当我向各位讲解find命令的时候,我还得老老实实地在cmd窗口中敲下 find /? 这条命令,然后重重地按下回车键。

  find /? 的执行结果很快,唰的一下,帮助信息全出来了,与findstr命令10多个开关比起来,find仅有5个开关,算得上小巫见大巫了。

 
 find命令的基本格式是这样的:find "要查找的字符串"
要查找的文件,在这里,"要查找的字符串"这个内容是必不可少的,引号也是必须的。例如:find "bathome"
d:\test.txt,表示在D盘根目录下的文本文件test.txt中查找含有 bathome 这一字符串的所有行。

  find的结果将会有两种情况:

  1、当文件中包含要查找的字符串时,将返回这个字符串所在位置的整行内容,具体格式为:第一行是"---------- ×××" (×××表示被查找的文件名,不包括引号对),第二行开始才出现包含字符串的整行内容;
  2、当文件中没有出现要查找的字符串时,find的结果仅仅返回"---------- ×××" 这一行内容(×××表示被查找的文件名,不包括引号对)。

  在查找指定字符串的时候,有的场合需要区分大小写,有的场合则对大小写并不在意,如何实现这些需求呢?

 
 很简单,在find的时候,添加或取消/i开关就是了,具体用法为:find /i "Abc" test.txt 表示不区分大小写,文本内容中含有
Abc、abc、ABC之类的都算;find "Abc"
test.txt则严格区分字符大小写,只能匹配Abc,而不能匹配abc、ABC之类的字符。

  有时候,我们的需求并不是为了查找
到某个字符串,而是要检测哪些行不含有特定的字符串,这个时候,可以使用开关/v,用法为:find /v "Abc"
test.txt,它表示查找那些不含字符串Abc的行(Abc要区分大小写),如果不区分abc的大小写,那么,应该写成 find /i /v
"Abc" test.txt。

  有时候,我们的要求很简单,仅仅只是想统计包含某个字符串的行总共有多少,这个时候,应该使用开关/c,写成 find /c "abc" test.txt。

 
 如果要在每行的行首显示行号,怎么办?那就写成 find /n "abc" test.txt
吧,它会把test.txt的内容都显示出来,与原文不一样的是,在每行内容的行首,都加上了行号——注意,它仅仅是在显示的时候加上行号而已,并没有真
正改写文件的内容。

  如果你看到这样的命令:find /i /v /n "Abc"
test.txt,请一点要先沉住气,不要被众多的开关弄得眼花缭乱吓趴下了,仔细对照上面的解释,相信你很快就会理解它的功能:在test.txt文件
中,查找不包含字符串Abc的所有行,并在行首标上这些行的行号,查找的时候,字符串Abc不区分大小写。

  要是使用这样的语句:find /c /n "abc" test.txt,会出现什么样的结果呢?答案是:开关/n会被忽略掉,最终结果不会显示带行号的行内容,只会显示匹配的总行数而已。

 
 echo abcdef|find
"abc",见过这种写法吗?它的含义是:在字符串abcdef中,检测是否存在字符串abc,也就是说,find支持管道符号,把管道符号之前的语句的
执行结果,作为指定字符串的查找对象,甚至,你可以使用这样的语句:find "abc" test.txt|find
"xyz",它表示在test.txt中查找同时存在字符串abc和字符串xyz的行,只要你愿意,你可以继续用管道符号把这个find语句连接下去,我
们把这个过程称为多重过滤。

  在前面,我们说过,在 find "要查找的字符串" 要查找的文件 这条命令语句中,引号是必须的,要是我们要查找的内容就是双引号本身,那又该怎么办?

  答案很简单:把双引号本身先用双引号转义,再放到双引号对中,写成 find """" test.txt 的格式,如果要查找两个连续的双引号,则应该写成 find """""" test.txt。

  如果你想查找两行之间的字符块,我劝你趁早放弃这个疯狂的想法,因为,find仅仅针对位于同一行上的字符串,不能查找跨行的字符块。

  与findstr命令相比,find的功能确实有限得多,仅仅因为不支持正则表达式这一点,就有不少人把它视为鸡肋,从而遭到无情的抛弃。

  然而,find并非一无是处,凭借自己的独门绝技,在与findstr的竞争中,它挣得了一席之地。

  这些独门绝技是什么呢?(感谢BatCoder的提醒和zqz0012005的补充)

  1、统计含指定字符串的总行数。find /c "abc" test.txt可以统计test.txt中含有字符串abc的总行数,而findstr则没有直接提供该功能,需要配合for语句才能实现;
  2、find可以读取Unicode格式的文本,而findstr则不行;
 
 3、find可以过滤某些特殊字符,而findstr则不行,比如,我们在使用fsutil fsinfo
drives语句查询磁盘分区的时候,如果想让盘符分行显示而不是显示在同一行上的时候(这在用for语句提取盘符的时候很有用),find可以大显身
手,而findstr只能干瞪眼了,具体语句为:fsutil fsinfo drives|find /v ""

字符串查找 cmd find命令的更多相关文章

  1. Linux命令应用大词典-第7章 字符串、文件和命令查找

    7.1 grep:字符串.文件和命令的查找 7.2 egrep:在文件或标准输入中查找模式 7.3 fgrep:在每个文件或是标准输入中查找模式 7.4 find:列出文件系统内符合条件的文件 7.5 ...

  2. Cmd find命令 和 findstr 命令

    https://blog.csdn.net/icanlove/article/details/37567591   Windows CMD中 find命令(字符串查找) https://blog.cs ...

  3. 自己动手写文件查找,字符串查找,查询jar包等工具

    文件查找——搜索当前目录下的文件 知道大概的文件名称,使用 findf FileName findf.py import argparse, re, os from os.path import jo ...

  4. Linux基本命令(9)定位、查找文件的命令

    定位.查找文件的命令 命令 功能 命令 功能 which 从path中找出文件的位置 find 找出所有符合要求的文件 whereis 找出特定程序的路径 locate 从索引中找出文件位置 9.1 ...

  5. windows下cmd中命令操作

    windows下cmd中命令:   cls清空 上下箭头进行命令历史命令切换 ------------------------------------------------------------- ...

  6. CentOS定位、查找文件的命令

    定位.查找文件的命令 命令 功能 命令 功能 which 从path中找出文件的位置 find 找出所有符合要求的文件 whereis 找出特定程序的路径 locate 从索引中找出文件位置 9.1 ...

  7. windows 老掉牙CMD的命令

    再老,也得温习下: net use \\' /user:'administrator' //ipc连接 net use \\127.0.0.1\ipc$ /delete //退出ipc net use ...

  8. vim 查找和替换命令 替换/n和\n

    一. 字符串的查找 1. vim 中用 / 和 ? 来查找字符串,两者的区别是: /string 会高亮显示光标后匹配的第一个字符串,回车后光标移到该字符串的第一个字母: ?string 会高亮显示光 ...

  9. grep:字符串查找

    转自: http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达 ...

随机推荐

  1. C#使用IHttpModule接口修改http输出的方法浅谈

    一.但你每次请求浏览一个页面,比如Login.aspx的时候,都会执行配置文件中system.webserver内的model这个节点的东西(这个是属于遍历的逻辑执行,会将model这个节点的东西全部 ...

  2. POJ 1740 A New Stone Game(多堆博弈找规律)

    传送门 //有n堆,AB轮流从n堆的一堆中移任意个,可以扔掉,也可以移给其他堆中的一堆 //最先移完的胜 //如果n堆中两两堆数目相等,那肯定是B胜 //但只要有非两两相同的,如xyz,A先, //A ...

  3. JSP的改动需要重启应用服务器才能生效?

    PLM的版本由2013版升级到2016版,部署到应用服务器tomEE的war包也更新了,今天在Linux服务器上hot fix一个JSP页面的时候发现改动没有生效,要重启tomEE才生效,纳闷了一下才 ...

  4. UESTC 1272 Final Pan's prime numbers(乱搞)

    题目链接 Description Final Pan likes prime numbers very much. One day, he want to find the super prime n ...

  5. jQuery执行进度提示窗口的实现(progressbar)

    使用jQuery原生插件,先看效果: 主要是progressbar的更新进度以及“请稍等”后省略号.倒计时关闭的效果 如果执行单个任务的时间较长,会导致浏览器假死,一定要使用异步,代码结构要稍作调整. ...

  6. js与jquery实时监听输入框值变化方法

    本文实例讲述了js与jquery实时监听输入框值的oninput与onpropertychange方法.分享给大家供大家参考.具体如下: 最近做过一个项目,需求是下拉框里自动匹配关键字,具体细节是实时 ...

  7. 一些css3的特效 javascript的window对象 定时器 延时器等ing...

    风车转动代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  8. php 备份数据库

    <?php    header("Content-type:text/html;charset=utf-8");    //配置信息  $cfg_dbhost = 'loca ...

  9. tomcat配置多个虚拟主机

    先修改默认端口(8080),http的默认端口是80,我们将8080改成80,这样域名就不用带上端口了 修改conf文件夹下的server.xml文件 添加多个主机(以下三个主机对应三个域名,三个域名 ...

  10. python--sorted函数和operator.itemgetter函数

    1.operator.itemgetter函数operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子. a = [1 ...