当前位置: 首页 > Linux

Linux中3个文件搜索相关命令详解

时间:2023-04-06 01:51:08 Linux

1、whichcommand我们经常想在Linux中查找一个文件,却不知道它放在哪里。可以使用以下命令进行搜索:其中查看可执行文件的位置。whereis查看文件的位置。locate使用数据库检查文件位置。find实际上是搜索硬盘查询文件名。which命令的作用是在PATH变量指定的路径中搜索某个系统命令的位置,并返回第一个搜索结果。也就是说,通过which命令,可以看到某个系统命令是否存在,以及命令执行到哪里了。1.命令格式:which可执行文件名2.命令功能:which命令会在PATH变量指定的路径中搜索某个系统命令的位置,并返回第一个搜索结果。3、命令参数:-n 指定文件名的长度,指定的长度必须大于等于所有文件中最长的文件名。-p 和-n参数一样,只是这里包含了文件的路径。-w 指定输出时的列宽。-V 显示版本信息4.使用示例:示例一:查找文件并显示命令路径命令:whichlsmod输出:[root@localhost~]#whichpwd/bin/pwd[root@localhost~]#whichadduser/usr/sbin/adduser说明:which就是根据用户配置的PATH变量中的目录搜索可执行文件!所以在不同的PATH配置内容中找到的命令当然是不一样的!示例2:使用which查找哪个命令:whichwhich输出:[root@localhost~]#whichaliaswhich='alias|/usr/bin/which--tty-only--read-alias--show-dot--show-tilde'/usr/bin/which[root@localhost~]#说明:会有两个which,其中一个whichisalias这就是所谓的“命令别名”,意思是which的输入将等于后面的那串命令!示例3:查找命令cd命令:whichcd输出:解释:找不到常用的命令cd!为什么?那是因为cd是bash内置的!但是which默认是找PATH中指定的目录,当然肯定是找不到的!2.whereis命令whereis命令只能用来搜索程序名,只能搜索二进制文件(参数-b)、man描述文件(参数-m)和源代码文件(参数-s)。如果省略该参数,则返回所有信息。与find相比,whereis的查找速度是非常快的。这是因为linux系统会将系统中的所有文件记录在一个数据库文件中。使用下面介绍的whereis和locate时,会从数据库中查找数据。而不是像find命令那样翻遍硬盘,效率自然会很高。但是,数据库文件不会实时更新。默认情况下,它每周更新一次。因此,我们在使用whereis和locate查找文件的时候,有时会发现已经删除的数据,或者只是创建了文件,却找不到。原因是数据库文件没有更新。1、命令格式:whereis[-bmsu][BMS目录名-f]文件名2、命令功能:whereis命令是定位文件系统中的可执行文件、源代码文件、帮助文件。这些文件的属性应该属于源代码、二进制文件或帮助文件。whereis程序还具有搜索源代码、指定替代搜索路径和搜索不寻常项目的能力。3.命令参数:-b定位可执行文件。-m找到帮助文件。-s定位源代码文件。-u在默认路径中搜索除可执行文件、源代码文件和帮助文件之外的其他文件。-B指定搜索可执行文件的路径。-M指定搜索帮助文件的路径。-S指定搜索源代码文件的路径。4、使用示例:示例一:找出所有与**file相关的文件命令:whereissvnoutput:[root@localhost~]#whereistomcattomcat:[root@localhost~]#whereissvnsvn:/usr/bin/svn/usr/local/svn/usr/share/man/man1/svn.1.gz解释:tomcat没有安装,找不到,svn安装发现很多相关文件例2:只查找二进制文件命令:whereis-bsvn输出:[root@localhost~]#whereis-bsvnsvn:/usr/bin/svn/usr/local/svn[root@localhost~]#whereis-msvnsvn:/usr/share/man/man1/svn.1.gz[root@localhost~]#whereis-ssvnsvn:[root@localhost~]#说明:whereis-msvn查找文档的路径,whereis-ssvn查找源文件。3、locate命令locate可以让用户快速查找文件系统中是否有指定的文件。其方法是先建立一个包含系统中所有文件的名称和路径的数据库,然后在搜索时只需要查询这个数据库,而不需要真正深入文件系统。在一般发行版中,数据库的建立是在crontab中自动执行的。1、命令格式:定位【选择参数】【样式】2。命令功能:locate命令可以在搜索数据库时快速找到文件。数据库由updatedb程序更新。updatedb由cron守护进程定期创建。locate命令在查找数据库时比从整个硬盘数据中查找数据要快,但更糟糕的是如果locate查找到的文件是最近创建的或者只是更改了名称,则可能找不到。默认值中updatedb会每天运行一次,可以通过修改crontab来更新设置值。(etc/crontab)locate指定搜索符合条件的文件。它会到存储文件和目录名的数据库中查找满足模板样式条件的文件或目录。特殊字符(如“*”或“?”等)指定模板样式,如果指定的模板是kcpa*ner,locate会查找所有以kcpa开头,以ner结尾的文件或目录,如果名称为kcpartner,如果目录名称为kcpa_ner,则会列出导出该目录包括子目录下的所有文件locate命令类似于find查找文件的功能,但是locate使用update程序首先创建一个索引database为硬盘中的所有文件和目录数据,执行loacte时直接查找索引,查询速度会更快,索引数据库一般由操作系统管理,但也可以直接下发update强制系统立即修改索引数据库。3.命令参数:-e将被排除在搜索之外。-1如果是1.然后启动安全模式。在安全模式下,用户将看不到不允许的文件被用户看到。这将开始变慢,因为定位必须转到实际的文件系统以获取文件的权限数据。-f排除特定的文件系统,比如我们没有理由把proc文件系统的文件放在数据库中。-q安静模式,不会显示任何错误信息。-n最多显示n个输出。-r使用正则表达式作为搜索条件。-o指定存储库的名称。-d指定数据库的路径-h显示辅助信息-V显示程序的版本信息4、使用示例:示例1:查找所有与pwd相关的文件命令:locatepwd输出:peida-VirtualBox~#locatepwd/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开头的文件文件命令:locate/etc/sh输出:peida-VirtualBox~#locate/etc/sh/etc/shadow/etc/shadow-/etc/shellspeida-VirtualBox~#示例3:搜索etc目录,全部以m开头文件命令:locate/etc/m输出:peida-VirtualBox~#locate/etc/m/etc/magic/etc/magic.mime/etc/mailcap/etc/mailcap.order/etc/manpath.config/etc/m如果ate-settings-daemon有什么错误或者其他问题,欢迎大家留言评论,指出有帮助,欢迎点赞+转发分享。欢迎大家关注米公公的公众号:米公公的技术之路