Alex_McAvoy

想要成为渔夫的猎手

Linux 文件查询

【概述】

在 Linux 中,当给出文件名要查找文件目录时,有 whereislocatefind 这三条命令

Linux 系统会将系统中的所有文件都记录在一个数据库文件 /var/lib/mlocate 中,当使用 whereislocate 命令时,都会以此数据库文件为准,根据数据库中的结果去查找文件所在

find 命令是直接查找硬盘,相较于 whereislocate 命令,要花费更多的时间

【whereis 命令】

whereis 命令格式为:whereis [选项] 文件名或目录名

其选项有:

  • -b:只查找二进制文件
  • -m:只查找说明文件 manual 路径下的文件
  • -s:只查找 source 源文件
  • -u:查找不在上述三个选项中的其他特殊文件

如下图,利用 whereis 找出 ifconfig 文件

【locate 命令】

locate 命令相较于 whereis 命令更加简单,其后输入文件的部分名称即可得到结果

locate 命令格式为:locate [选项] 关键字

其选项有:

  • -i:忽略大小写
  • -r:后接正则表达式

如下图,利用 locate 找出 passwd 相关的文件

【mlocate 数据库】

使用 whereislocate 命令寻找数据时,其 /var/lib/mlocate 数据库每天默认更新一次,这就导致有时会查找不到新建的文件,或者能查找到刚删除的文件

如果想要对 /var/lib/mlocate 数据库进行手动更新,直接输入 updatedb 命令即可,该命令会根据 /etc/updatedb.conf 的设置,去查找系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件

需要注意的是,使用 updatedb 命令手动更新 mlocate 数据库时,会花费较长的时间

【find 命令】

命令格式

find 命令相较于 whereislocate 命令来说,会耗时较长一些,但其结果更加准确,不会出现 whereisloacte 命令出现的问题

其命令格式为:find [路径] [选项]

与时间有关的选项

find 命令与时间有关的选项有:-atime-ctime-mtime 这三个,下面以 -mtime 为例进行说明:

  • -mtime n:列出 n 天之前的一天内被更改过的文件
  • -mtime +n:列出 n 天之前被更改过的文件,不包括 n 天本身
  • -mtime -n:列出 n 天之前被更改过的文件,包括 n 天本身
  • newer file:列出比 file 还要新的文件名

可以发现,与时间有关的选项,其核心在于 n,有没有 +、- 号区别很大,以下图为例:

图中最右边为当前时间,越向左代表越早之前的时间轴,4、+4、-4 分别具有以下含义:

  • 4:4~5 那一天的的文件
  • +4:大于等于 5 天前的文件
  • -4:小于等于 4 天内的文件
感谢您对我的支持,让我继续努力分享有用的技术与知识点!