locate
比 find
好用的文件查找工具
补充说明
locate
让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab
中自动执行。
locate
命令可以在搜寻数据库时快速找到档案,数据库由 updatedb
程序来更新,updatedb
是由 cron daemon
周期性建立的,locate
命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是 locate
所找到的档案若是最近才建立或刚更名的,可能会找不到,在内定值中,updatedb
每天会跑一次,可以由修改 crontab
来更新设定值(etc/crontab
)。
locate
指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如*
或?
等)来指定范本样式,如指定范本为kcpaner
,locate
会找出所有起始字串为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
开头的文件 :
locate -i ~/r
slocate
命令查找文件或目录
补充说明
slocate
命令是一个命令查找文件或目录。slocate
本身具有一个数据库,里面存放了系统中文件与目录的相关信息。
语法
代码语言:javascript复制slocate [-u] [--help] [--version] [-d <目录>] [查找的文件]
选项
代码语言:javascript复制-d<目录> 或 --database=<目录> 指定数据库所在的目录。
-u 更新 `slocate` 数据库。
--help 显示帮助。
--version 显示版本信息。
实例
使用指令 slocate
显示文件名中含有关键字 fdisk
的文件路径信息,输入如下命令:
$ 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
命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场