字符串查找 cmd find命令

作者: 字体:[增加 减小] 类型:转载 时间:2009-07-05 我要评论

当我要查找字符串的时候,第一个想到的命令,并不是我在本文中要讲解的find,而是比它更强悍的命令findstr。
我对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 ""

Tags:cmd find

相关文章

  • 2008-06-06写批处理必备的一些命令参数使用技巧
  • 2007-08-08bat与注册表操作的方法分析
  • 2008-08-08CMD CODE PAGE的概念及其设置值使用方法
  • 2014-07-07批处理中如何判断参数中含有某些字符串?
  • 2012-11-11Windows批量添加防火墙例外端口的批处理代码
  • 2008-06-06Emeditor与dos(cmd)经典使用技巧之批量生成网页
  • 2009-05-05百度关键字搜索(批处理打开网页)
  • 2010-07-07批量列出所有文件名的批处理
  • 2013-05-05用BAT实时读取某个文件目录下文件数(包括子目录)
  • 2006-11-11巧用net命令解决XP中打印连接数问题

字符串查找 cmd find命令相关推荐

  1. cmd html 查找汉子字,字符串查找 cmd find命令

    字符串查找 cmd find命令 2009-07-05 14:33:02 作者: 当我要查找字符串的时候,第一个想到的命令,并不是我在本文中要讲解的find,而是比它更强悍的命令findstr. 我对 ...

  2. linux全局查找字符串,Linux系统字符串查找命令详细说明

    Linux系统中有时候需要特定的查找字符串的功能.下面由学习啦小编为大家整理了Linux系统字符串查找命令详细说明,希望对大家有帮助! Linux系统字符串查找命令详细说明 1.作用 Linux系统中 ...

  3. cmd批处理命令大全1

    cmd和批处理命令大全 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. 语法 echo [{on|off}] [message] Sa ...

  4. Windows cmd常用命令行命令

    Windows常用命令行命令 打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注: ...

  5. cmd常用命令大全 cmd运行命令

    cmd常用命令大全 2k和xp下的cmd命令 accwiz.exe > 辅助工具向导  acsetups.exe > acs setup dcom server executable  a ...

  6. 【windows命令】--cmd常用命令

    打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后关闭cmd ...

  7. windows命令提示符cmd常用命令

    首先,打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... { 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后 ...

  8. 【网络安全】Windows cmd的命令混淆学习思路

    前言 最近有些朋友问我一些免杀问题,由于个人技术有限,对静态免杀有些了解(动态免杀真的不会,太菜了),所以就总结了一些Windows中cmd的命令混淆思路,静态免杀无非就是对安全设备检测到代码(命令) ...

  9. linux几种常见的文件内容查找和替换命令

    1.vi命令下的查找和替换 1.1 vi下的查找 /pattern<Enter> :向下查找pattern匹配字符串 ?pattern<Enter>:向上查找pattern匹配 ...

最新文章

  1. 树莓派避障小车(python)
  2. 数据库字符mysql_MySQL数据库之字符函数详解
  3. 什么是传感器融合?我们从“盲人摸象”讲起……
  4. 如何配置Microsoft LoopBack Adapter 配置为系统的主网络适配器
  5. 计算机网络核心知识(中)
  6. 39页第7题 计算2的i次方之和
  7. Jquery实用笔记
  8. 这不是商业互吹,是学习的宝藏
  9. 通过模板设计按钮样式
  10. 程序员工资为什么普遍很高,原来是因为这个...
  11. 自己给打印机怎么加粉墨,联想兄弟打印机加粉步骤
  12. linux下卸载grads,linux下安装grads
  13. 提高iOS开发效率的方法和工具
  14. 《Cocos Creator游戏实战》在游戏中显示弹幕
  15. 【Spring MVC】Json 前后端合并
  16. linux中test命令详解
  17. PS做文字特效nbsp;
  18. liunx安装node
  19. ESP32 Wi-Fi讲解,station连接热点案例
  20. SQL Compare数据库如何解决部署时出现的错误

热门文章

  1. 【数据库】Oracle基础命令
  2. IoT黑板报0210:Google 发布 Android Things 开发者第二预览版
  3. Pinyin4j的基本用法
  4. word打印“错误!未找到引用源”的解决办法
  5. HTMLbutton 标签和input type=button的区别
  6. 【1】深度学习之饮水思源:从感知机到深度网络
  7. 2.3   文 法 和 语 言 的 形 式 定义
  8. 大数据培训:Spark 性能调优详解
  9. Python模块介绍(如何安装、使用)
  10. 计算机英语过级考试开挂,四六级口语:开挂攻略+考试黄金模板!