转 dos 下的 find 和 重定向 and 删除
1.find /i "ora-" *.* > check.log
del /Q .\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 ""
转 dos 下的 find 和 重定向 and 删除的更多相关文章
- 转 dos 下的 find 和 重定向
1.find /i "ora-" *.* > check.log 附录: 我对findstr是如此的依赖,以至于当我向各位讲解find命令的时候,我还得老老实实地在cmd窗口 ...
- 如何让Vim显示dos下的^M符号
/*********************************************************************** * 如何让Vim显示dos下的^M符号 * 声明: * ...
- DOS下windows系统查看wifi密码
DOS下windows系统查看wifi密码 首先,按win+R键,win键如下 弹出框中输入cmd 在弹出界面输入 netsh wlan show profiles 你可以看到你链接过的所有wifi名 ...
- JAVA手记 JAVA入门(安装+Dos下运行)
JAVA入门特供= =,今天设置环境变量后用dos运行的时候发现出现“找不到或无法加载主类”,索性查了些资料重新看了看JAVA入门的部分. 声明:我的笔记本暂时用的是Win10系统,Windows其他 ...
- mysql的初识--DOS下的简单命令
DOS下进入 1.通过程序中的mySQL的:MySQL 5.6 Command Line Client直接进入mySQL的命令行: 2.或者通过WIn+R-->输入cmd,然后C:等一层一层找到 ...
- 在DOS下的DEBUG命令的详细用法
在DOS下的DEBUG命令的详细用法 名称 解释 格式 a (Assemble) 逐行汇编 a [address] c (Compare) 比较两内存块 c range address d (Dump ...
- [C] zlstdint(让VC、TC等编译器自动兼容C99的整数类型)V1.0。支持Turbo C++ 3等DOS下的编译器
作者:zyl910 以前我曾为了让VC++等编译器支持C99的整数类型,便编写了c99int库来智能处理(http://www.cnblogs.com/zyl910/p/c99int_v102.htm ...
- dos下mysql登陆
dos下先进入mysql的bin目录 然后执行:mysql -r root -p123456(注意123456是密码) 进去之后:首先要这样:use test;//代表你目前要使用的是test这个数据 ...
- dos 下 查看和设置classpath的命令
dos 下 查看和设置classpath的命令查看:echo %classpath%设置:set classpath=%classpath%path 其中%classpath%代表以前的值,pa ...
随机推荐
- mybatis进行分页,使用limit
这里记录两个思路: 首先是写一个不能执行的代码. <select id="query" parameterType="map" resultType=&q ...
- Java丨DBCP连接池完整配置
<!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...
- stack_1.设计一个有getMin功能的栈
思路 : 生成两个栈($stack ,$stack_min ),往$stack塞数据($value)的时候 ,比较一下$value和$stack_min最上面的元素的大小,如果$value小,则压入$ ...
- 基于jQuery Ajax实现无刷新文件上传
最近因项目需求更改,需要实现选择文件后即时上传至服务器,然后提交后,加载xls表格内容到jqgrid表格中,文件上传功能实现示例: 前端jsp页面: <form id="uploadF ...
- android自定义控件(一) 官方文档的翻译
构建自定义组件 Android中,你的应用程序程序与View类组件有着一种固定的联系,例如按钮(Button).文本框(TextView),可编辑文本框(EditText),列表框(ListView) ...
- kubectl工具管理应用生命周期
######kubectl管理工具###### [root@k8s-master dashboard]# kubectl get pod NAME READY STATUS RESTARTS AGE ...
- 【LeetCode】046. Permutations
题目: Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] ha ...
- BZOJ1758:[WC2010]重建计划
浅谈树分治:https://www.cnblogs.com/AKMer/p/10014803.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem. ...
- poj3468区间加减查找——树状数组区间修改查询
题目:http://poj.org/problem?id=3468 增加一个更改量数组,施以差值用法则区间修改变为单位置修改: 利用公式可通过树状数组维护两个数组:f与g而直接求出区间和. 代码如下: ...
- 利用反射拿到并递归C#类中的各个字段名字及类型
以下方法实现了遍历一个class中所有的字段, 并且递归遍历sub class. private StringBuilder _properties = new StringBuilder() ...