• Linux之文件/目录搜索


    相关知识

    locate命令用来查找文件或目录。

    locate命令要比其他查找文件命令(例如:find)快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db

    /var/lib/mlocate/mlocate.db这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用locate查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

    locate命令

    接下让我们详细的学习locateupdatedb的使用方法。

    locate具体命令如下:

    locate 命令参数 文件/目录

    常用命令参数如下:

    1. -c, --count 只输出找到的数量;
    2. -d, --database DBPATH 使用DBPATH指定的数据库,而不是默认数据库/var/lib/mlocate/mlocate.db;
    3. -i, --ignore-case 忽略大小写;
    4. -q, --quiet 安静模式,不会显示任何错误讯息;
    5. -e, --existing 只显示当前存在的文件条目;

    案例演示1

    搜索etc目录下以pass开头的文件或目录,具体使用如下命令:

    1. locate /etc/pass

     

    案例演示

    搜索包含passwd字母的文件或目录总个数,具体使用如下命令:

    locate -c passwd

     

    updatedb命令

    updatedb命令用来创建或更新locate命令所必需的数据库文件。

    updatedb命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入locate数据库文件中。

    具体命令如下:

    updatedb 命令参数

    常用参数如下:

    1. -o<文件>:忽略默认的数据库文件,使用指定的slocate数据库文件;
    2. -U<目录>:更新指定目录的slocate数据库;
    3. -v:显示执行的详细过程;

    执行权限:updatedb必须以root权限才能执行,如果是普通用户想执行updatedb时,需要在命令前加sudo命令来提升权限为root权限。

    案例演示1

    新创建一个testFile文件,更新locate数据库后使用locate命令定位该文件,具体使用如下命令:

    1. touch testFile
    2. locate testFile
    3. sudo updatedb
    4. locate testFile

     

    可以看到新创建文件后直接使用locate去查找是没有任何结果的,只有更新数据库后才能查找到新创建的文件。

    案例演示2

    删除testFile文件,更新locate数据库后使用locate命令定位该文件,具体使用如下命令:

    1. rm testFile
    2. locate testFile
    3. sudo updatedb -U ./
    4. locate testFile

     

    第三条命令是只更新testFile所在目录的数据库,这样速度比较快,如果不使用该参数,则会更新整个文件系统的内容。

    可以看到删除文件后直接使用locate去查找是可以定位到的,但是此时文件已经不存在了,原因是没有马上更新数据库。

    编程要求

    在右侧编辑器中补充代码,使用locate命令查找系统中的文件,具体编程要求如下:

    • 使用locate命令查找系统中所有包括group字母的文件或目录的总个数;

    • 使用locate命令定位系统中最新创建的文件newFile

    1. #!/bin/bash
    2. #在以下部分写出完成任务的命令
    3. #*********begin*********#
    4. #使用locate命令查找系统中所有包括group字母的文件或目录的总个数;
    5. locate -c group
    6. #使用locate命令定位系统中最新创建的文件newFile。
    7. updatedb
    8. locate newFile
    9. #********* end *********#

  • 相关阅读:
    Linux桌面环境中应用程序无法启动图形交互界面
    【红包雨压测环境】
    java 单例模式
    ubuntu20.04桌面蓝屏问题解决
    eslint 覆盖插件的某项规则
    EasyNVR平台级联到EasyCVR,视频播放一会就无法播放是什么原因?
    【Day_14 0510】▲幸运的袋子
    两台电脑mysql数据迁移,各版本mysql迁移(亲测)
    Mybatis详解
    全新英雄联盟AI声音,在线体验免费开放!
  • 原文地址:https://blog.csdn.net/qq_61604164/article/details/126163911