Linux的文件搜索命令

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 可以找到可执行文件和其别名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值