linux初学者笔记(8):find 和grep命令
find [搜索范围] [搜索条件]
1.例子
当搜索范围为/root,搜索条件为-name的时候,这表示在/root目录下按文件名搜索,而且是全名搜索
在范围上,我们必须考虑效率的问题,如果搜索范围大,那么效率无疑是低的
2.通配符匹配
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号里的字符
注意,这种匹配需要加双引号
问题1:在/root目录下怎么搜索以3或2结尾的文件?
3.各种搜索条件
不区分大小写 -iname
按照所有者来搜索,-user,需要指定user名
搜索没有所有者的文件,-nouser,不需要指定user名,也就是不需要参数
没有所有者的文件,一般是垃圾文件,可以删除。但是有一部分文件是由操作系统内核产生的,这一部分文件就不是垃圾文件,不能删,比如在proc和sys目录下的东西;还有一种是外来数据,比如在windows下的文件拷贝到u盘上,再传给linux,那么没有所有者。
按时间搜索
时间分为以下种类
atime 文件访问时间
ctime 改变文件属性时间
mtime 修改文件内容时间
以mtime为例子
+4 4天前修改的
4 4天前的当天的修改
-4 4天内的修改
可以看到有一部分隐藏文件。
按照文件大小来搜索
find . -size 25k 表示搜索当前目录下大小为25k的文件
25k 就是等于25k的文件
+25k 就是大于25k的文件
-25k 就是小于25k的文件
其他的都差不多
例子中做了一些测试,不支持浮点数,而且k不能为大写
当不带单位时,也是显得很奇怪。原来,它的默认单位时一个数据块。。
而且,如果单位是M的话一定要大写。。。。
这个选项比较少用,比较反人类。。。
按i节点来搜索文件
-inum
4.补充内容多条件查询
如果我想要搜索文件,其大小是介于1k到10k之间的呢?
-a and
-o or
-exec 执行,这个格式末尾会有 {} \; (注意这里面的空格)
grep [选项] 字符串 文件名
-v 取反
-i 忽略大小写
加了-v之后就搜索文件里面不含有size字符串的行
grep和find的区别
find是完全匹配,采用通配符匹配
grep是包含匹配,采用正则表达式匹配