本文主要记录Linux常用命令中的文件搜索命令,如下。
- 文件搜索命令locate
- 命令搜索命令 whereis 与which
- 文件搜索命令 find
- 字符串搜索命令grep
- find命令与grep的区别
1 文件搜索命令locate
locate [filname]
locate命令搜索文件是基于后台数据库搜索的,在后台数据库中按文件名搜索,搜索速度更快所以比find那种需要扫描所有地方的命令的搜索速度要快些,且消耗资源比较小。
后台数据库目录 /var/lib/mlocate 一天一更新,因此对于刚建立的文件,使用该命令进行查找将会搜索不到所创建的文件。这个时候若想使用该命令查找文件,使用命令updatedb更新数据库即可。这里需要使用管理员权限哟。。
updatedb
linux版本不同目录可能不同 可使用locate locate命令查找相关文件
/etc/updatedb.conf 配置文件,配置筛选规则 locate\whereis\which命令会按照这个配置文件搜索文件,
PRUNE_BIND_MOUNTS = "yes"
#开启搜索限制 yes 表示配置项全生效 no 表示配置项不生效
PRUNEFS =
#搜索时,不搜索的文件系统
PRUNENAMES =
#搜索时,不搜索的包含这些关键字的文件
PRUNEPATHS =
#搜索时,不搜索这些路径下更新的文件
优点:搜索速度快
缺点:只能按照文件名来搜索
2 命令搜索命令whereis /which
#whereis /which查看的都是外部安装的命令 不能查看shell内部命令 比如cd
#whereis搜索命令所在路径及帮助文档所在位置
选项:
-b 只查找可在执行文件
-m 至查找帮助文件
举个例子 查找ls命令
/bin/ls 代表命令文件 /usr/share/man/man1/ls.1.gz代表帮助文档
想要这条命令干嘛的 whatis ls
# which 命令查看命令的所在位置 ,若命令有别名也会显示别名
3 文件搜索命令 find
命令 :
find [搜索范围] [搜索条件]
#避免大范围搜索,会非常耗费资源
# find是在系统中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
find /root -iname install.log
#不区分大小写
find /root -user root
#按照所有者来搜索
find /root -nouser
#查找没有所有者的文件
find /var/log -mtime +10
#查找十天前修改的文件
-10 10天内修改的文件 10 10天当天修改的文件 +10十天前修改的文件
atime 文件访问时间 ctime 改变文件属性 mtime 修改文件内容
find /etc -size 25k
#搜索指定文件大小的文件 k是小写 M是大写
知道i节点查看文件名
find /root -inum i节点
条件
-a and逻辑与
-o or 逻辑或
-exec/-ok 命令 {} \; #对搜索结果执行操作
举个栗子:
#查找/etc/目录下,大于20KB且小于40KB的文件
#查找/etc/目录下,大于20KB且小于40KB的文件,并且显示详细信息
4 grep命令
# 在指定的文件中所搜符合条件的字符串
grep [选项] 字符串 文件名
选项:
- i 忽略大小写
-v 排除指定字符串
5 find命令与grep的区别
- find命令:在系统当中搜索符合条件的文件名,如果匹配,使用通配符匹配,通配符是完全匹配
- grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式包含匹配