Linux的查找命令

Linux常用的查找命令有:find、which、 whereis、 locate、 type.

1.find : 查找任何文件

格式:find [PATH] [option] [action]

参数说明:

        时间查找参数:

         -atime  n: 将n*24小时内access过的文件列出来

         -ctime   n: 将n*24小时内状态发生改变的文件列出来

         -mtime  n: 将n*24小时内被修改过的文件列出来

         -newer file: 把比file还要新的文件列出来

       名称查找参数:

        -gid   n:  寻找群组ID为n的文件

        -group name: 寻找群组名称为name的文件

        -uid   n:  寻找拥有者ID为n的文件

        -user name:  寻找拥有者名称为name的文件

        -name file:    寻找文件名为file的文件(可以使用通配符)

作用:search for files in a directory hierarchy. 从当前目录递归的搜索文件。

原理:遍历当前工作目录及其子目录,find命令是在硬盘上遍历查找,非常耗硬盘资源,查找效率相比whereis和locate较低。

使用场景:能用其他几个不建议使用find,效率太低。

2.which:查找系统命令的位置

which   [-a]    cmdname1 cmdname2 ...

-a     在PATH中打印所有匹配的可执行文件,而不仅仅是第一个

作用:locate a command,从环境变量PATH中,定位/返回与指定名字相匹配的可执行文件所在的路径

原理:执行which命令时,which会在当前环境变量PATH依次寻找能够匹配所找命令名字的可执行文件名,不加-a选项,返回第一个匹配的可执行文件的路径,否则依次返回满足条件的所有可执行文件的路径名。

适用场景:一般用于查找命令/可执行文件所在的路径。有时候可能在多个路径下存在相同的命令,该命令可用于查找当前所执行的命令到底是哪一个位置处的命令。

3.whereis:程序名搜索

whereis    [-b/m/s/u]    filename1  filename2 ...

-b          仅搜索二进制文件。-m         仅搜索手册。-s          仅搜索来源。-u          仅显示具有不寻常条目的命令名称。

作用:locate the binary, source, and manual page files for a command.即:定位/返回与指定名字匹配的二进制文件、源文件和帮助手册文件所在的路径。

原理:whereis命令首先会去掉filename中的前缀空格和以.开头的任何字符,然后再在数据库(var/lib/slocate/slocate.db)中查找与上述处理后的filename相匹配的二进制文件、源文件和帮助手册文件,使用之前可以使用updatedb命令手动更新数据库。适用场合:二进制文件、源文件和帮助手册文件路径的查找。

4.locate:利用数据库查找文件

locate [option]    filename1 filename2 ...

-i 忽略大小写

-r:后面可接正则表达式的实现方式。

作用:find files by name from one or more databases prepared by updatedb. 同whereis指令一样,也是从数据库建立的索引中查找,不同的是该命令查找所有部分匹配的文件,使用之前可以使用updatedb命令手动更新数据库。

原理:默认情况下(当filename中不包含通配符*),locate会给出所有与*filename*相匹配的文件的路径。

 适用场合:没有文件类型性质的模糊查找(当只记得某个文件的部分名称)。

5.type: 用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令

type [option] [commond]

-t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;

-p:如果给出的指令为外部指令,则显示其绝对路径;

-a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。

grep(全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。(常用作搜索过滤)。

-a 不要忽略二进制数据。
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。

猜你喜欢

转载自blog.csdn.net/bian_cheng_ru_men/article/details/80525269
今日推荐