linux 命令:locate详解

名称

        locate - 用名称找文件

用法

        locate [OPTION]... PATTERN...

描述

        locate 读取一个或多个由 updatedb 更新的数据库,并将至少与 PATTERN 之一匹配的          文件名写入标准输出,每行一个。 如果未指定 --regex,则 PATTERN 可以包含通配              符。 如果任何 PATTERN 不包含通配符,则 locate 的行为就像模式是 *PATTERN* 一            样。默认情况下, locate 不检查在数据库中找到的文件是否仍然存在(但如果数据库            是使用 --require-visibility no 构建的,它确实要求所有父目录都存在)。locate 永远不            会报告在相关数据库的最新更新之后创建的文件。

退出状态

        如果找到任何匹配项,或者使用 --limit 0、--help、--statistics 或 --version 选项之一调            用 locate,则 locate 以状态 0 退出。 如果未找到匹配项或遇到致命错误,则 locate 以          1 状态退出。读取数据库时遇到的错误不是致命错误,如果可能的话,将在其他指定的          数据库中继续搜索。

选项

        -A,--all

                只打印与所有 PATTERN 匹配的条目,而不是只需要匹配其中一个。

        -b,--basename

                仅将基本名称与指定模式匹配。这与--wholename 相反。

        -c,--count

                将匹配的条目的数量写入标准输出,而不是文件名。

        -d,--database DBPATH

                用 DBPATH 替换默认数据库。DBPATH 是一个:-分隔的数据库文件名列表。如果                    指定了多个 --database 选项,则生成的路径是单独路径的串联。空数据库文件名                   被默认数据库替换。数据库文件名 - 指的是标准输入。请注意,数据库只能从标                     准输入读取一次。

        -e,--existing

                仅打印运行 locate 时存在的文件的条目。

        -L,--follow

                检查文件是否存在时(如果指定了 --existing 选项),后接软链接。这会导致从输                  出中省略损坏的软链接。这是默认行为。可以使用 --nofollow 指定相反的情况。

        -h,--help

                输出帮助文档后退出。

        -i,--ignore-case

                匹配模式时忽略大小写。

        -l,--limit,-n LIMIT

                找到 LIMIT 个数的条目后成功退出。如果指定了 --count 选项,数量也被限定为                      LIMIT。

        -m,--mmap

                忽略。与 BSD 和 GNU locate 兼容。

        -P,--nofollow,-H

                在检查文件是否存在时(如果指定了 --existing 选项),后边不要接软链接。这会                  导致像其他文件一样地输出损坏的软链接。这是 --follow 的相反情况。

        -0,--null

                在输出中使用 ASCII NUL 分隔条目,而不是每行一个条目。此选项旨在与 GNU                    xargs 的 --null 选项进行互操作。

        -S,--statistics

                将每个读取数据库的统计信息写入标准输出,而不是搜索文件并成功退出。

        -q,--quiet

                在读数据库和操作数据库时遇到的错误信息不输出。

        -r,--regexp REGEXP

                搜索基本的正则表达式 REGEXP。 如果使用此选项,则不允许使用 PATTERN,                  但可以指定此选项多次。

        --regex

                将所有 PATTERN 解释为扩展的正则表达式。

        -s,--stdio

                忽略。与 BSD 和 GNU locate 兼容。

        -V,--version

                输出版本信息后退出。

        -w,--wholename

                仅将整个路径名与指定模式匹配。这是默认行为。可以使用 --basename 指定相反                  的内容。

文件

        默认搜索的数据库:/var/lib/mlocate/mlocate.db

环境变量

        LOCATE_PATH

                附加数据库的路径,添加在默认数据库或使用 --database 选项指定的数据库之                      后。

注意事项

        处理请求的数据库的顺序未指定,这允许 locate 出于安全原因重新排序数据库路径。            locate 尝试以该顺序与 slocate(没有用于创建数据库的选项)和 GNU locate 兼容。            这就是不切实际的默认使用 --follow 选项以及令人困惑的 --regex 和 --regexp 选项集的          原因。-r 选项的短拼写与 GNU locate 不兼容,它对应于 --regex 选项。使用长选项名            称以避免混淆。LOCATE_PATH 环境变量替换了 BSD 和 GNU locate 中的默认数据              库,但在此实现和 slocate 中它被添加到其他数据库中。

使用示例:

1. locate 常用操作

## 搜索指定目录下的所有文件
[root@server dir]# locate ~/dir
/root/dir
/root/dir_link
/root/dire
/root/dir/.temp
/root/dir/File4
/root/dir/a
/root/dir/b
/root/dir/c
/root/dir/dir1
/root/dir/dir2
/root/dir/dir3
/root/dir/dir4
/root/dir/file.zip
/root/dir/file2
/root/dir/file3
/root/dir/file4
/root/dir/filee
/root/dir/dir2/b
/root/dir/dir2/file1
/root/dir/dir2/file2
/root/dir/dir3/dir3
/root/dir/dir3/file1
/root/dir/dir3/dir3/file2
/root/dire/file2

## 搜索file4
[root@server dir]# locate file4
/root/dir/file4

## 使用正则搜索
[root@server dir]# locate -r file4$
/root/dir/file4

## 忽略大小写
[root@server dir]# locate File4
/root/dir/File4
[root@server dir]# locate -i file4
/root/dir/File4
/root/dir/file4
[root@server dir]# locate -i File4
/root/dir/File4
/root/dir/file4

2. updatedb 命令:因为 locate 要搜索的数据库是每天更新一次,所以新建的文件默认是第二天才会保存到数据库。需要使用 updatedb 更新到数据库中才能立即被 locate 搜索到。 

[root@server dir]# touch file5
[root@server dir]# locate file5
[root@server dir]# updatedb
[root@server dir]# locate file5
/root/dir/file5
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linuxlocate命令用于快速定位文件或目录,它通过搜索系统的数据库来找到与指定关键字匹配的文件。locate命令速度快、效率高,但它只搜索文件名中包含指定关键字的文件,不搜索文件的内容。使用locate命令需要安装并定期更新数据库。 ### 回答2: Linux Locate命令Linux操作系统提供的一个工具,主要用于快速搜索文件系统中的文件。它通过在预先建立的数据文件中查找来实现文件查找速度的提高。Locate命令可用于在系统中查找特定的文件名或扩展名,也可以查找文件所在的目录或者包含指定文本的文件。本文将对Locate命令的使用和操作进行详细介绍。 一、Linux Locate命令的安装 通常情况下,Linux系统中已经预先安装此命令,可以通过输入locate命令查看是否已经安装了该命令,如果没有安装则需要使用Linux系统的包管理工具进行安装,比如运行以下命令: - 以Debian/Ubuntu系统为例: sudo apt-get update sudo apt-get install locate - 以CentOS/RHEL系统为例: sudo yum install mlocate 二、Linux Locate命令的用法 常见的Locate命令方式如下: 1、查找文件名称/扩展名: sudo locate filename 这个命令会搜索包含指定文件名或扩展名的所有文件。 2、查找包含指定文本的文件: sudo locate -i "text" 这个命令会搜索包含指定文本的所有文件,参数-i即为不区分大小写。 3、刷新Locate命令的数据库: sudo updatedb 这个命令会用于刷新Locate命令的数据库,以便于Locate命令做好文件查找的准备。 4、限制搜索文件的范围: sudo locate -r "^/usr/share/.*\.txt$" 这个命令会通过正则表达式限制搜索文件的范围,本例子表示只在在/usr/share目录下搜索所有扩展名为txt的文件。 5、限制文件的搜索范围和类型: sudo locate -d /usr/path/to/db/dir/file.db -i "*.conf" 这个命令使用Locate 命令的某些更高级功能,它可以: - 制定在某个数据库文件中进行搜索,并且只在这个数据库文件所包含的文件中查找。 - 支持 * 和? 通配符,只查找指定类型的文件。 6、查找最近更新的文件: sudo locate -c /path/to/filename 这个命令通过加上-c参数来查找最近更新的文件,默认是查找最近更新的文件,同时返回统计信息。 三、Locate 命令的工作原理: Locate缺省会在系统中基于统计数据(databases)的索引文件中查找文件。缺省情况下,这个统计数据是在每天晚上进行更新的。 当我们运行Locate命令时,会进入下述的4步: 1、首先判断系统是否有静态统计数据,即/etc/locate.d/default或者/etc/updatedb.conf文件,如果没有,就扫描所有的可读的文件系统,并记下查找到的所有文件; 2、把扫描到的所有文件名字添加到静态数据库中; 3、查找静态数据库来搜索文件; 4、输出匹配到的文件。 以上就是Linux Locate命令的基本使用方法与原理,通过这个命令可以快速查找文件,为Linux操作系统的管理带来了很多的便利。 ### 回答3: locate命令是一款在Linux系统中常用的文件查找工具,它可以快速地查找文件或目录,其速度比系统自带的find命令快很多。 使用locate命令需要先安装mlocate软件包。在Ubuntu系统中,可以通过以下命令安装: ``` sudo apt install mlocate ``` 安装完毕后,就可以使用locate命令来查找文件了。locate命令的基本语法如下: ``` locate [option] filename ``` 其中,filename为要查找的文件名或通配符,option为可选项。 常用的option有: - -i,忽略大小写 - -c,只显示匹配的文件数量而不显示文件名 - -r,使用正则表达式进行匹配 - -e,精确匹配文件名,不允许使用通配符 - -b,只匹配文件名的开头部分 例如,要查找当前系统中所有以log结尾的文件,可以使用以下命令: ``` locate *.log ``` 要忽略大小写进行查找,可以使用以下命令: ``` locate -i test.log ``` 如果要精确匹配文件名,可以使用-e选项: ``` locate -e test.log ``` 使用locate命令需要注意的是,它只能查找已经建立索引的文件,在系统首次安装mlocate软件包或者新建文件后,需要先通过命令updatedb来更新索引,否则无法查找到新建文件。 本文介绍的就是linux系统中常用的locate命令。该命令可以快速查找文件和目录,并且速度比系统自带的find命令快很多。希望读者能够掌握该命令的使用方法,提高工作效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值