前言
最重要的事情不是如何搜索成功,而是尽量少用搜索。这就要求我们要对服务器目录结构有很好的规划,对文件要有序的分类。 Linux的搜索功能是十分占用系统资源,因此,在服务器的使用高峰期不允许使用搜索命令。 搜索的范围应当尽可能小,搜索的条件应当尽可能精确,消耗的资源也就越少。
find 命令
命令名称:find
命令所在路径:/bin/find
执行权限:所有用户
功能描述:文件搜索
语法:find [搜索范围] [ 选项 | 匹配条件 ]
-name:匹配名称(区分大小写)
“*”:匹配任意多个字符,包括0个。“?”:匹配任意一个字符。
-iname:匹配名称(忽略大小写)
-size:匹配文件或目录大小(数值的单位是数据块,需要我们自己做计算)
“+”:大于。“-”:小于。没有符号表示等于。(下同,数值查找都能适用这些符号) 数据块是Linux存储文件的最小单位。1数据块 = 512字节 = 0.5K。例:1MB = 1024KB = 2048数据块。
-user:匹配文件或目录的所有者
-group:匹配文件或目录的所属组
-amin:(access)匹配文件或目录访问时间,单位:分钟
-cmin:(change)匹配文件或目录属性修改时间,单位:分钟
-mmin:(modify)匹配文件或目录内容修改时间,单位:分钟
-a:两个匹配条件必须同时满足
-o:两个条件满足任意一个即可
-type:根据类型查找,f 文件,d 目录,l 软链接文件
-inum:根据iNode节点名称查找
-exec/-ok:对搜索结果执行操作
固定格式:-exec/-ok 命令 {} \; -exec:不询问,直接对搜索结果执行指定的命令 -ok:对每一个结果都询问,是否要执行指定的命令
## 范例
find /home -name "libai.txt" ## 在/home目录下,精确搜索名称为libai.txt的文件或目录
find / -name "liba*" ## 在/目录下,模糊搜索名称为liba开头的文件或目录
find / -name "libai????" ## 在/目录下,模糊搜索名称为libai开头且长度为10的文件或目录
find / -name "LIBA*" ## 在/目录下,模糊搜索名称为LIBA开头的文件或目录,忽略大小写
find /home -size +2048 ## 在/home目录下,查找大小大于1MB的文件或目录
find /home -user "gmd" ## 在/home目录下,查找所有者为gmd的文件或目录
find /home -mmin -5 ## 在/home目录下,查找5分钟内内容被修改过的文件或目录
find / -name "libai*" -o -size -2048 ## 在/目录下,查找以libai开头 或 大小小于1MB的文件或目录
find / -size +2048 -a -size -4096 ## 在/目录下,查找大小大于1MB 且 小于2MB的文件或目录
find / -name "libai*" -type f ## 在/目录下,查找名称为libai开头的文件
find . -inum 123423 ## 在当前文件下查找iNode为123423的文件,主要用于查找硬链接
find . -inum 123423 -ok rm {} \; ## 在当前文件下查找iNode为123423的文件,并询问我是否删除