Linux学习之路(三)搜索命令

1.文件搜索命令locate

2.命令搜索命令whereis与which

3.字符串搜索命令grep

4.find命令与grep命令的区别

locate命令相对于find命令搜索非常快,find命令在哪个目录下使用就在该目录下遍历一遍,非常消耗资源。

locate命令格式

locate 文件名

在后台数据库中按文件名搜索,搜索速度非常更快。locate不能搜索新建的文件,原因为locate命令不是直接在系统当中去搜索,而是在/var/lib/mloacte中去搜索。/var/lib/mlocate是locate命令所搜索的后台数据库。执行locate时,在数据库中搜索,不需要遍历整个操作系统,所以搜索文件时速度非常快。但是mlocate数据库不是实时更新,默认一天一更新,所以新建文件时,mlocate数据库并没有更新,locate该文件时没有能够搜索到,等到它更新时就能搜索到了。除此之外,还可以强制更新mlocate数据库,用命令updatedb命令来强制更新数据库。不同版本的Linux中locate命令的数据库mlocate的命名不同,有的是locatedb,有的是slocated。具体用locate去locate

自身。

缺点:只能按文件名搜索,功能单一。

locate搜索时是按照/etc/updatedb.conf配置文件来搜索的

PRUNE_BIND_MOUNTS="yes"         #开启搜索限制
PRNEFS =                        #搜索时,不搜索的文件系统
PRUNENAMES =                    #搜索时。不搜索的文件类型
PRUNEPATHS =                    #搜索时,不搜索的路径

当更新了数据库后仍不能搜索到文件时,可以去看一下/etc/updatedb.conf里面是不是存在排除的规则。

2.命令的搜索命令whereis与which

搜索命令的命令whereis

搜索命令所在路径及帮助文档所在位置

选项:

-b  只查找可执行文件

-m  只查找帮助文件

只能搜索系统命令,不能搜索我们创建的文件

搜索命令的命令which

which 文件名

搜索命令所在的路径及别名        #但是并不是所有命令都有别名,如系统shell命令。which只能搜索外部安装外部外来命令。

当我们执行一个外部命令时,首先在$PATH路径下去找该命令,没有就报错。如果有就不用加绝对路径,没有就要加绝对路径,否则就放进$PATH路径下来定义搜索环境。

PATH环境变量

PATH环境变量:定义的是系统搜索命令的路径

3.文件搜索命令find

 find命令

find [搜索范围] [搜索条件]        #搜索文件

注意

#避免大范围搜索,会非常耗费系统资源

#场面是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配

 Linux中的通配符

*  匹配任意内容

?  匹配任意一个字符

[]  匹配任意一个中括号内的字符

find /root -iname install.log    #不区分大小写
find /root -user root    #按照所有者搜索
find /root -nouser        #查找没有所有者的文件

find /var/log/ -mtime +10      #查找10天前修改的文件

-10    10天内修改的文件

10    10天当天修改的文件

+10    10天前修改的文件

atime  文件访问时间

ctime  改变文件属性

mtime  修改文件内容

find . -size 25k    #查找当前目录下大小是25KB的文件

-25k  小于25KB的文件

25K  等于25KB的文件

+25  大于25KB的文件

kb要小写,MB要大写

find . -size +2M

find . -inum  262626  #查找inode号是262626的文件

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  命令{};  对搜索结果执行操作 

4.搜索字符串命令grep

.grep  [选项]  字符串  文件名

#在文件当中匹配符合条件的字符串

选项:

  -i  忽略大小写

  -v  排除指定字符串

find命令与grep命令的区别

.find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符是完全匹配。

.grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达工时包含匹配      

原文地址:https://www.cnblogs.com/RzCong/p/6639967.html