查找相关的命令


我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which 查看可执行文件的位置。
whereis 查看文件的位置。
locate 配合数据库查看文件位置。
find 实际搜寻硬盘查询文件名称。

which命令

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

查找文件、显示命令路径

[wang@localhost ~]$ which tree
/usr/bin/tree

whereis 命令

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。

但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

命令格式:

whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

参数

-b  只查找二进制文件。

-B<目录>  只在设置的目录下查找二进制文件。

-f  不显示文件名前的路径名称。

-m  只查找说明文件。

-M<目录>  只在设置的目录下查找说明文件。

-s  只查找原始代码文件。

-S<目录>  只在设置的目录下查找原始代码文件。

-u  查找不包含指定类型的文件。

使用指令”whereis”查看指令”bash”的位置

[wang@localhost ~]$ whereis bash
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz

注意:以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径。

#显示bash 命令的二进制程序
[wang@localhost ~]$ whereis -b bash
bash: /usr/bin/bash
#显示bash 命令的帮助文件
[wang@localhost ~]$ whereis -m bash
bash: /usr/share/man/man1/bash.1.gz
#查找源文件
[wang@localhost ~]$ whereis -s bash
bash:
[wang@localhost ~]$

locate命令

Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。

一般情况我们只需要输入 locate your_file_name 即可查找指定文件。

语法

locate [-d ][--help][--version][范本样式...]

参数:

  • -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 – 显示版本信息

查找和pwd相关的所有文件

[wang@localhost ~]$ locate pwd
/etc/.pwd.lock
/usr/bin/pwd
/usr/bin/pwdx
/usr/lib/modules/3.10.0-123.el7.x86_64/kernel/drivers/watchdog/hpwdt.ko
/usr/lib64/cracklib_dict.pwd
/usr/lib64/python2.7/lib-dynload/spwdmodule.so
/usr/sbin/unix_chkpwd
/usr/share/cracklib/cracklib-small.pwd
/usr/share/cracklib/pw_dict.pwd
/usr/share/doc/krb5-workstation-1.11.3/user/pwd_mgmt.html
/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
/usr/share/help/en_GB/empathy/irc-join-pwd.page
/usr/share/help/es/empathy/irc-join-pwd.page
/usr/share/help/eu/empathy/irc-join-pwd.page
/usr/share/help/fi/empathy/irc-join-pwd.page
/usr/share/help/fr/empathy/irc-join-pwd.page
/usr/share/help/gl/empathy/irc-join-pwd.page
/usr/share/help/hu/empathy/irc-join-pwd.page
/usr/share/help/it/empathy/irc-join-pwd.page
/usr/share/help/ja/empathy/irc-join-pwd.page
/usr/share/help/lv/empathy/irc-join-pwd.page
/usr/share/help/pl/empathy/irc-join-pwd.page
/usr/share/help/ru/empathy/irc-join-pwd.page
/usr/share/help/sl/empathy/irc-join-pwd.page
/usr/share/help/sv/empathy/irc-join-pwd.page
/usr/share/help/te/empathy/irc-join-pwd.page
/usr/share/help/zh_CN/empathy/irc-join-pwd.page
/usr/share/man/man0p/pwd.h.0p.gz
/usr/share/man/man1/pwd.1.gz
/usr/share/man/man1/pwdx.1.gz
/usr/share/man/man1p/pwd.1p.gz
/usr/share/man/man3/lckpwdf.3.gz
/usr/share/man/man3/ulckpwdf.3.gz
/usr/share/man/man8/unix_chkpwd.8.gz
[wang@localhost ~]$

搜索etc目录下所有以sh开头的文件

[wang@localhost ~]$ locate /etc/sh
/etc/shadow
/etc/shadow-
/etc/shells
[wang@localhost ~]$

附加说明

locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。

locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:

updatedb

默认情况下 updatedb 每天执行一次。


文章作者: WangQingLei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WangQingLei !
  目录