# locate
**特性:**
+ 速度快
+ 只能按文件名搜索
+ 在后台数据库中搜索
**语法**
~~~
$ locate 文件名
~~~
**案例**
~~~
$ locate test.php
~~~
# 命令的搜索的命令 `whereis And which`
## whereis
| 命令 | 英文愿意 | 命令所在路径 | 权限 | 功能 |
| --- | --- | --- | --- | --- |
| whereis | | /bin/whereis/ | 所有用户 | 搜索命令所在位置,及帮助文档所在位置 |
**语法**
~~~
whereis -bm [命令]
~~~
+ -b 只查找可执行文件
+ -m 只查找帮助文档
**实例**
~~~
# 查看ls命令所在位置及帮助文档所在位置
$ whereis ls
~~~
## which
| 命令 | 英文愿意 | 命令所在路径 | 权限 | 功能 |
| --- | --- | --- | --- | --- |
| which | | /bin/which/ | 所有用户 | 查找命令的别名和所在的位置 |
**语法**
~~~
which [命令]
~~~
**实例**
~~~
# 查看ls命令所在位置及别名
$ which ls
~~~
# find
| 命令 | 英文愿意 | 命令所在路径 | 权限 | 功能 |
| --- | --- | --- | --- | --- |
| find | | /bin/find/ | 所有用户 | 搜索文件 |
**语法**
~~~
$ find [搜索范围] [匹配条件]
~~~
+ -name 按文件名搜索
+ -iname 不区分大小写
+ -user 按所有者搜索
+ -nouser 搜索没有所有者的文件
+ -mtime 查找n天前修改的文件(改变文件内容)
+ +10 查找10天前修改的文件
+ -10 10天内修改的文件
+ 10 10天当前修改的文件
+ -atime 文件访问时间
+ -ctime 改变文件属性
+ -size 按文件大小来搜索
+ -25k 小于25k
+ 25k 等于25k
+ +25k 大于25k
**实例**
~~~
$ find / -name index.php
# 搜索以rmp结尾的文件
$find /root -name '*[rmp]'
# 搜索没有所有者的文件
$ find / -nouser
# 查找10天前修改的文件
$ find /var/log -mtime +10
# 按文件大小来搜索
$ find . -size 25k
~~~
**注意**
+ 避免大范围搜索,会非常耗费系统资源
+ find是在系统中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符完全匹配。
**补充**
Linux中的通配符:
+ *: 匹配任意内容
+ ? : 匹配任意一个字符
+ []: 匹配任意一个中括号内的字符
# 字符串搜索命令 grep
| 命令 | 英文愿意 | 命令所在路径 | 权限 | 功能 |
| --- | --- | --- | --- | --- |
| grep | | /bin/grep/ | 所有用户 | 搜索字符串 |
**语法**
~~~
$ grep [选项] 字符串 文件名
~~~
+ -i 忽略大小写
+ -v 排除指定字符串
**实例**
~~~
# 文件内包含size
grep "size" anaconda-ks.cfg
~~~
# find与grep的区别
+ find:在系统中搜索符合条件的文件名
+ grep:在文件中搜索符合条件的字符串
