locate(在数据库中搜索文件)
locate : 定位
locate [文件名]
- 因为搜索数据库,所以搜索速度非常快
- 数据库文件的位置在
/var/lib/mlocate
,这个数据库中包含了所有的文件名 - 该数据库文件每天更新一次,当我们作新建文件,或是其他等操作,系统不会主动更新数据库,需要 使用
updatedb
命令更新 - locate命令搜索遵循
/etc/updatedb.conf
配置文件
#是否开启搜索限制
PRUNE_BIND_MOUNTS="yes"
# 搜索时,不搜索的文件类型
# PRUNENAMES=".git .bzr .hg .svn"
# 搜索时,不搜索的文件路径
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs"
# 搜索时,不搜索的文件系统
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
whereis(命令搜索命令)
- 用于搜索命令所在的路径以及帮助文档所在的位置,不能搜索用户自己创建的文件等信息。
不能看到shell命令(自带的命令,比如cd命令),只能看到外部安装的命令(环境变量中的命令)
- -b:只查找可执行文件
- -m:只查找帮助文件
which(命令搜索命令)
- 与whereis命令类似,但是还可以看到命令文件的所在位置
find(文件搜索命令)
find [搜索范围] [搜索条件]
- 避免大范围搜索,会非常消耗系统资源
- 可以使用通配符匹配
- *匹配任意内容
- ?匹配任意一个字符
- []匹配任意一个括号内的字符
完全匹配
时间
- -mtime +10:查找10天前修改的文件
- -mtime 10:查找10天前当天修改的文件
- -mtime -10:查找10天内修改的文件
类型
- -atime 文件访问时间
- -ctime 改变文件属性
- -mtime 修改文件内容
其他选项
- -iname test:不区分要搜索的test大小写格式
- -user root:搜索属于root用户的文件
- -nouser:搜索没有所属者的文件,liunx中,每个文件都有所属者,如果没有,有可能有以下几种情况:垃圾文件、内核产生的文件(proc/,sys/)、外来文件(U盘拷入)
- -size:文件大小用小写k和大写M
- -a 表示and
- -o 表示or
find /etc -size +20k -a -size -50k -exec ls -lh {} \
;
-exec {} \; 固定格式,表示直接对前面的搜索结果进行后面的命令处理
grep(字符串搜索命令)
grep "string" ./filname.config
- 在指定文件中搜索字符串
- 和find不同,这个搜索是包含匹配
需要使用正则表达式匹配
- -v:取反,搜索不含string的字符串
- -i:忽略大小写