【linux命令讲解大全】002. 使用locate更快速地查找文件

2024-03-02 11:18:30 浏览数 (1)

locate

find 好用的文件查找工具

补充说明

locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。

locate 命令可以在搜寻数据库时快速找到档案,数据库由 updatedb 程序来更新,updatedb 是由 cron daemon 周期性建立的,locate 命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是 locate 所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb 每天会跑一次,可以由修改 crontab 来更新设定值(etc/crontab)。

locate 指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如*?等)来指定范本样式,如指定范本为kcpanerlocate 会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括子目录在内的所有档案。

locate 指令和 find 找寻档案的功能类似,但 locate 是透过 update 程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在执行 locate 时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达 update 强迫系统立即修改索引数据库。

语法

代码语言:javascript复制
locate [-d path | --database=path] [-e | -E | --[non-]existing] [-i |
       --ignore-case] [-0 | --null] [-c | --count] [-w | --wholename] [-b |
       --basename] [-l N | --limit=N] [-S | --statistics] [-r | --regex ]
       [--regextype R] [--max-database-age D] [-P | -H | --nofollow] [-L |
       --follow] [--version] [-A | --all] [-p | --print] [--help] pattern...

选项

代码语言:javascript复制
-b, --basename            # 仅匹配路径名的基本名称
-c, --count               # 只输出找到的数量
-d, --database DBPATH     # 使用DBPATH指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-e, --existing            # 仅打印当前现有文件的条目
-1                        # 如果是1,则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 `locate` 必须至实际的档案系统中取得档案的权限资料。
-0, --null                # 在输出上带有NUL的单独条目
-S, --statistics          # 不搜索条目,打印有关每个数据库的统计信息
-q                        # 安静模式,不会显示任何错误讯息。
-P, --nofollow, -H        # 检查文件存在时不要遵循尾随的符号链接
-l, --limit, -n LIMIT     # 将输出(或计数)限制为LIMIT个条目
-n                        # 至多显示n个输出。
-m, --mmap                # 被忽略,为了向后兼容
-r, --regexp REGEXP       # 使用基本正则表达式
    --regex               # 使用扩展正则表达式
-q, --quiet               # 安静模式,不会显示任何错误讯息
-s, --stdio               # 被忽略,为了向后兼容
-o                        # 指定资料库存的名称。
-h, --help                # 显示帮助
-i, --ignore-case         # 忽略大小写
-V, --version             # 显示版本信息

实例

实例1:查找和 pwd 相关的所有文件
代码语言:javascript复制
root ~ # locate pwd
/bin/pwd
/etc/.pwd.lock
/sbin/unix_chkpwd
/usr/bin/pwdx
/usr/include/pwd.h
/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.py
/usr/lib/python2.7/dist-packages/twisted/python/fakepwd.pyc
/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.py
/usr/lib/python2.7/dist-packages/twisted/python/test/test_fakepwd.pyc
/usr/lib/syslinux/pwd.c32
/usr/share/help/C/empathy/irc-join-pwd.page
/usr/share/help/ca/empathy/irc-join-pwd.page
/usr/share/help/cs/empathy/irc-join-pwd.page
/usr/share/help/de/empathy/irc-join-pwd.page
/usr/share/help/el/empathy/irc-join-pwd.page
实例2:搜索 /etc 目录下所有以 sh 开头的文件
代码语言:javascript复制
root ~ # locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
实例3:搜索 /etc 目录下,所有以 m 开头的文件
代码语言:javascript复制
root ~ # locate /etc/m
/etc/magic
/etc/magic.mime
/etc/mailcap
/etc/mailcap.order
/etc/manpath.config
/etc/mate-settings-daemon

忽略大小写搜索当前用户目录下所有以 r 开头的文件 :

代码语言:javascript复制
locate -i ~/r

slocate

命令查找文件或目录

补充说明

slocate 命令是一个命令查找文件或目录。slocate 本身具有一个数据库,里面存放了系统中文件与目录的相关信息。

语法

代码语言:javascript复制
slocate [-u] [--help] [--version] [-d <目录>] [查找的文件]

选项

代码语言:javascript复制
-d<目录> 或 --database=<目录>  指定数据库所在的目录。
-u  更新 `slocate` 数据库。
--help  显示帮助。
--version  显示版本信息。

实例

使用指令 slocate 显示文件名中含有关键字 fdisk 的文件路径信息,输入如下命令:

代码语言:javascript复制
$ slocate fdisk #显示文件名中含有fdisk关键字的文件的路径信息 

执行以上命令后,指令执行的输出信息如下:

代码语言:javascript复制
$ slocate fdisk #显示文件名中含有fdisk 关键字的文件的路径信息  
/root/cfdisk        #搜索到的文件路径列表  
/root/fdisk  
/root/sfdisk  
/usr/include/grub/ieee1275/ofdisk.h  
/usr/share/doc/util-Linux/README.cfdisk  
/usr/share/doc/util-Linux/README.fdisk.gz  
/usr/share/doc/util-Linux/examples/sfdisk.examples.gz  

zcat

显示压缩包中文件的内容

补充说明

zcat 命令用于在不真正解压缩文件的情况下显示压缩包中文件的内容。

语法

代码语言:javascript复制
zcat [选项] [文件]

选项

代码语言:javascript复制
-S    指定gzip格式的压缩包的后缀。当后缀不是标准压缩包后缀时使用此选项。
-c    将文件内容写到标准输出。
-d    执行解压缩操作。
-l    显示压缩包中文件的列表。
-L    显示软件许可信息。
-q    禁用警告信息。
-r    在目录上执行递归操作。
-t    测试压缩文件的完整性。
-V    显示指令的版本信息。
-l    更快的压缩速度。
-9    更高的压缩比。

参数

文件 指定要显示其中文件内容的压缩包。

补充说明

zcat 命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场

0 人点赞