暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

建立文件索引加速文件查找

生有可恋 2023-06-26
701

在 Linux 系统 和 Windows 系统上都可以使用 find 命令查找文件,但 find 命令属于无索引查找,速度比较慢。使用提前建好的文件索引查找文件,可以提高文件查找效率。

在 Linux 和 Windows 上所使用的索引服务稍微有点区别,下面分开进行介绍。Linux 使用 locate 命令进行文件定位,locate 命令会读取系统提前生成好的文件索引查找文件。而 Windows 则可以使用第三方软件 Everything 的文件列表功能对目标进行索引。

先说下即时查询所用的 find 命令,在 Windows 上使用该命令需要安装 Windows 版的 Git,安装完成后在 git-bash 命令行窗口即可使用 find 命令。

下面分别介绍 Linux 和 Windows 下建立索引的过程。

Linux 系统

Linux 系统下的 locate 命令会用到一个配置文件和一个索引文件。其中配置配置文件为:

    $ cat etc/updatedb.conf


    PRUNE_BIND_MOUNTS="yes"
    PRUNENAMES=".git .bzr .hg .svn"
    PRUNEPATHS="/sys /selinux /proc /tmp /var/spool /media /home/.ecryptfs"
    PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs vmhgfs"

    如果 Linux 系统中的文件特别多,则有可能会撑爆根分区。因为默认所有文件的创建都会更新位于 var/lib/mlocate/mlocate.db 的索引文件。

    配置文件 updatedb.conf 中的内容主要作用是用来排除掉一些目录和文件类型,比如 .git 、.svn 目录不做索引,/tmp、/proc 目录下的文件不做索引,nfs 类似的文件系统也不做索引。

    当更新 updatedb.conf 文件后,需要执行 updatedb 命令更新索引文件,即 mlocate.db 文件。updatedb 命令执行后没有输出,可以通过对比 mlocate.db 文件更新前后的大小来判断配置文件是否生效。

    locate 命令支持正则表达式,比如:

      $ locate -r gui.*exe
      /usr/local/lib/python3.9/site-packages/setuptools/gui-32.exe
      /usr/local/lib/python3.9/site-packages/setuptools/gui-64.exe
      /usr/local/lib/python3.9/site-packages/setuptools/gui.exe

      Windows 系统

      Windows 自带的文件索引功能不如第三方软件 Everything 强大,我们使用 Everything 来手动建立索引。Everything 默认会索引本地所有硬盘,在全盘查找文件无关内容会比较多。我们可以手动建立目录索引来缩小查找半径,这里用到的功能是 Everything 的文件列表功能。

      打开文件列表编辑器后可以通过拖拽的方式将目标目录拖入文件列表编辑器中,支持多次拖入,可以合并多个目录的文件索引。

      当列表拖拽结束,选择保存当前列表,最终会生成一个 .efu 的索引文件。

      下次需要查找文件时,通过 Everything 软件打开 .efu 索引文件即可对文件列表中的内容进行查找定位。

      索引后的文件可以通过文件名或正则表达式对文件进行查找,查询速度可做到秒级响应,同时也可以用来定位重复文件。

      除了可以通过拖拽生成索引文件,也可以使用命令行生成 .efu 索引文件。可以参考之前写的一篇文章:


      全文完。

      如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

      文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论