您的位置:首页 > 运维架构 > Linux

Linux的文件搜索命令

2016-02-14 11:44 597 查看

locate命令

locate命令配合后台数据库搜索,搜索速度快。

命令格式:locate 文件名

在后台数据库中按文件名搜索,搜索速度更快。

locate所搜索的后台数据库:/var/lib/mlocate

数据库名称可能随linux版本不同而不同。数据库更新频率为一天一次,不是实时更新。

更新数据库: updatedb

使用前可以强制更新数据库!

locate配置文件:/etc/updatedb.conf

// /etc/updatedb.conf 内容
// 开启搜索限制
PRUNE_BIND_MOUNTS = "yes"
// 搜索时,不搜索的文件系统
PRUNEFS=
// 搜索时,不搜索的文件类型
PRUNEPATHS=
// 搜索时,不搜索的路径
PRUNEPATHS=


locate缺点:只能按照文件名搜索

//新建文件
$touch newfile
$locate newfile // 找不到新建的文件

// 使用更新数据库命令
$updatedb
$locate newfile
$/home/hello/newfile

// 为什么有的文件无法搜索到?
// 原因:可能与locate配置文件的配置有关,如某些路径或文件类型不搜索
$touch /tmp/newfile
$locate newfile  // 找不到/tmp/newfile文件


搜索命令的命令whereis和which

whereis命令

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

选项:

-b : 只查找可执行文件

-m : 只查找帮助文件

-u:没有说明文档的文件

-s:只找 source 源文件

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
$ whereis -b ls
ls: /bin/ls


注:和 find 相比,whereis 查找的速度非常快,这是因为 linux 系统会将系统内的所有文件都记录在一个数据库文件中,当使用 whereis和下面介绍的locate 时,会从数据库中查找数据,而不像 find 命令那样,通过遍历银盘来查找,效率自然会很高。但是该数据库文件并不是实时更新,默认情况下一星期更新一次,因此,我们用 whereis 和 locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立的文件却无法查找到,原因就是因为数据库文件没有被更新。

which命令

用法:which 可执行文件名称

which是通过PATH环境变量到该路径内查找可执行文件,所以基本的功能时寻找可执行文件。

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

# 显示可执行文件的别名和位置,注意有的命令没有别名则只显示命令位置。
$ which ls
/bin/ls


注:which和whereis无法找到shell内置命令的位置!

如 cd命令是shell内置命令,ls是外部安装命令(/bin/ls)。

//whateis 命令显示命令的作用


type

type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。

type命令的使用实例:

$ type cd  // 系统会提示,cd是shell的自带命令(build-in)
$ type grep // 系统会提示,grep是一个外部命令,并显示该命令的路径。
$ type -p grep // 加上-p参数后,就相当于which命令。


find命令简介

$find 路径 参数

路径:

默认find搜索路径目录及其子目录

参数说明:

时间查找参数:

-atime n : 将n*24 小时内存取过的文件列出来

-ctime n : 将 n*24 小时内改变、新增的文件或者目录列出来

-mtime n :将 n*24 小时内修改过的文件或者目录列出来

-newer file :把比 file 还要新的文件列出来

名称查找参数:

-gid n :寻找群组 ID 为 n 的文件

-group name :寻找群组名称为 name 的文件

-uid n :寻找拥有者 ID 为 n 的文件

-username name :寻找拥护者名称为 name 的文件

-name file :寻找文件名为 file 的文件,可使用通配符

$ find / -name mytest
/home/mytest
/home/mytest/mytest


注:当使用 whereis 和 locate 无法查找的我们需要的文件时,可以使用 find,到那时 find 在硬盘上遍历查找,因此非常消耗硬盘资源,而且效率非常第,因此建议优先使用 whereis 和 locate。

可参考find命令详解深入学习

文件搜索命令之间的区别

linux下查找某个文件,但是不知道放在哪里,可以使用下面的命令来搜索。

locate 是在数据库里查找,配合数据库查看文件位置,数据库大至每天更新一次

whereis 查看文件的位置(包括可执行文件和普通文件);可以找到的可执行文件和 man page

find 就是根据条件查找文件,实际搜寻硬盘查询文件名称

which 可以找到可执行文件和其别名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: