find搜索的格式: find +搜索范围+搜索条件
exp:find / -name 文件名 避免在大范围搜索,会非常耗费资源
#find是在系统中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配的
#如果要进行模糊查询一定要加通配符
linux中的通配符:
* 带表匹配任意内容
? 匹配任意一个字符
【】 匹配任意一个中括号内的字符
find / -name “.......*” 注意加引号括起来
find可以支持 -iname 意思是不区分大小写, linux是严格区分大小写的
find /root -iname +文件名
#不区分文件名的大小写
find /root -user root
#按照所有者搜索 搜索用户为root 用户的目录
find /root -nouser
#查找没有所有者的文件(没有所有者的文件是垃圾文件,但是linux上有两个特殊情况,1、如果这个文件是内核产生的,内核直接调用,不需要经过系统目录,所以他产生的文件有可能没有所有者 2、外来文件,我的数据在widonws上建立的,如果拷到linux上,这个文件就没有所有者,windows忽略了所有者这个概念,一般的光盘,u盘,移动硬盘等的文件都属于外来文件)
find /var/log/ -mtime +10
#查找10天前修改的文件
-10 10天内修改的文件
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容
find . -size 25k
#查找文件大小是25kb的文件
-25k 小于25kb的文件
25k 等于25kb的文件
+25k 大于25k的文件
k 小写 M必须是大写
. 带表当前目录
find . -inum 265
#查找i节点是252422的文件
系统查找文件不是靠文件名而是通过inum节点去查找的 ls -i可以查找文件的i节点
find /etc -size +20k -a -size -50k
查找范围
#查找/etc/目录下,大于20kb并且小于50kb的文件
-a and 逻辑与,两个条件都满足
-o or 逻辑或,两个条件满足一个即可
find /etc -size +20k -a -size -50k -exec ls -lh {};
#查找/etc目录下,大于20kb并且小于50kb的文件并显示详细信息
#-exec/-ok 命令{};对搜索结果并执行操作
-exec 命令 {};是一个标准格式,是把前面执行的结果交给后面的命令去执行
find 与grep的区别
grep 是搜索字符串的命令 grep + 选项 + 字符串+ 文件名 字符串要用引号
grep -i 是不区分大小写
grep -v 排除指定字符串
grep命令是在文件中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式的包含匹配而find是在系统中搜索符合条件的文件,如果需要匹配,使用通配符进行匹配
find 是完全匹配而grep 是包含匹配, 完全匹配就是搜索到的必须跟他要搜索的一模一样,而包含匹配是只要包含就可以搜索到