Linux查找命令对比(find、locate、whereis、which、type、grep)

Linux查找命令对比(find、locate、whereis、which、type、grep)

2023年7月26日发(作者:)

Linux查找命令对⽐(find、locate、whereis、which、type、grep)

//太长不看版find查找磁盘空间,相较于locate和whereis速度较慢。find和locate的查找单位为⽂件或者⽬录,locate其实是find -name的另⼀种写法。locate和whereis都是在数据库中查找,所以新增⽂件⽆法查找到,必须先updatedb。whereis只搜索⼆进制⽂件(参数-b)、man说明⽂件(参数-m)和源代码⽂件(参数-s)。which和type查找的单位都是命令,type可区分命令类型。grep查找的单位是整⾏信息,在⼀个或多个⽂件中搜索字符串模板,功能是分析⼀⾏信息。(功能强⼤)

find  find是最常见和最强⼤的查找命令,你可以⽤它找到任何你想找的⽂件。与查询数据库(/var/lib/locatedb)⽂件不同,find查找磁盘空间。  $find [指定⽬录] [选项] [指定动作](不可调换位置)    - [指定⽬录]: 所要搜索的⽬录及其所有⼦⽬录。默认为当前⽬录。

     -[选项]: 所要搜索的⽂件的特征。      //常⽤选项      -name filename 查找名为filename的⽂件      -user username 按⽂件属主来查找      -group groupname 按组来查找      -mtime -n +n 按⽂件更改时间来查找⽂件,-n指n天以内,+n指n天以前      -atime -n +n 按⽂件访问时间来查找⽂件      -ctime -n +n 按⽂件创建时间来查找⽂件,-n指n天以内,+n指n天以前      -nogroup 查⽆有效属组的⽂件,即⽂件的属组在/etc/groups中不存在      -type b/d/c/p/l/f 查是块设备、⽬录、字符设备、管道、符号链接、普通⽂件      -size n[c] 查长度为n块[或n字节]的⽂件也可查找⼀个⼤⼩范围内的⽂件,⽤-n,+n     -[指定动作]: 对搜索结果进⾏特定的处理。  如果什么参数也不加,find默认搜索当前⽬录及其⼦⽬录,并且不过滤任何结果(也就是返回所有⽂件),将它们全都显⽰在屏幕上。  find实例  //查找当前⽬录下以“1”开头的⽂件  find . -name "1*"  //.代表当前⽬录下  //查找etc⽬录下以字母(不区分⼤⼩写)开头,.sh结尾的⽂件  find /etc -iname "[a-z]*.sh"  //*表⽰任意多个字符  //查找etc⽬录下⼤于20k,⼗天前创建的⽂件  find /etc -size +20k -a -mtime +10  //-a表⽰and,-o表⽰or  //查找当前⽬录下的普通⽂件,并列出他们的完整路径  find . -type f -exec ls -l {} ;  //反斜杠表⽰转义,{}表⽰当前find查找出来的⽂件名  //如果报find: missing argument to `-exec'的错就是{}和之间没有加空格

locate

  locate命令其实是“find -name”的另⼀种写法,但是要⽐后者快得多,原因在于它不搜索具体⽬录,⽽是搜索⼀个数据库(/var/lib/locatedb),这个数据库中含有本地所有⽂件信息。Linux系统⾃动创建这个数据库,并且每天⾃动更新⼀次,所以使⽤locate命令查不到最新变动过的⽂件。为了避免这种情况,可以在使⽤locate之前,先使⽤updatedb命令,⼿动更新数据库。  $locate [指定⽬录] [选项](可调换位置)    [指定⽬录]:所要查找的任意⽂件名称或者查找任意⽬录下的任意⽂件。    -[选项]:筛选⽂件的条件。      -e 将排除在寻找的范围之外。      -1 如果是1,则启动安全模式。在安全模式下,使⽤者不会看到权限⽆法看到的档案。这会始速度减慢,因为 locate 必须⾄实际的档案系统中取得档案的权限资料。      -f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。      -q 安静模式,不会显⽰任何错误讯息。      -n ⾄多显⽰n个输出。      -r 使⽤正规运算式 做寻找的条件。      -o 指定资料库存的名称。      -d 指定资料库的路径      -h 显⽰辅助讯息      -V 显⽰程式的版本讯息      -i 忽略字母⼤⼩写  locate实例  //查找etc⽬录下以sh开头的⽂件  locate etc/sh  //在根⽬录下新建⽂件,并查找  cd  touch   locate /根⽬录/text  //发现查找不到刚刚新建的⽂件,需要updatedb  updatedb  locate /根⽬录/text  //发现可以查找到⽂件

whereis  whereis命令只能⽤于程序名的搜索,⽽且只搜索⼆进制⽂件(参数-b)、man说明⽂件(参数-m)和源代码⽂件(参数-s)。如果省略参数,则返回所有信息。同locate⼀样,查询数据库(/var/lib/locatedb)⽂件。所以和locate⼀样,查找新增加的⽂件前,需要先使⽤updatedb命令,⼿动更新数据库。  $whereis [选项] [程序名](不可调换位置)    -[选项]:设置查找⽂件的类型      -b 只查找⼆进制⽂件。      -B <⽬录>只在设置的⽬录下查找⼆进制⽂件。      -f 不显⽰⽂件名前的路径名称。      -m 只查找说明⽂件。      -M <⽬录>只在设置的⽬录下查找说明⽂件。      -s 只查找原始代码⽂件。      -S <⽬录>只在设置的⽬录下查找原始代码⽂件。      -u 查找不包含指定类型的⽂件。    [程序名]:只能⽤于程序名  whereis实例  //查找和find相关的所有⽂件  whereis find

  //查找和find相关的⼆进制⽂件  whereis -b find

which   which命令的作⽤是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第⼀个搜索结果。也就是说,使⽤which命令,就可以看到某个系统命令是否存在,以及执⾏的到底是哪⼀个位置的命令。  $which [命令名]    命令说明which是有选项的,但是我尝试了加选项,对结果并没有影响。希望知道的⼈来帮我解答这个问题!  which实例  //which 查找pwd命令  which pwd  //which 查找adduser命令  which adduser  which是根据使⽤者所配置的 PATH 变量内的⽬录去搜寻可运⾏档的。所以,不同的 PATH 配置内容所找到的命令是不⼀样的。

type  type命令其实不能算查找命令,它是⽤来区分某个命令到底是由shell⾃带的,还是由shell外部的独⽴⼆进制⽂件提供的。如果⼀个命令是外部命令,那么使⽤-p参数,会显⽰该命令的路径,相当于which命令。  $type [选项] [命令名]    -[选项]    -t 输出“file”、“alias”或者“builtin”,分别表⽰给定的指令为“外部指令”、“命令别名”或者“内部指令”;    -p 如果给出的指令为外部指令,则显⽰其绝对路径;    -a 在环境变量“PATH”指定的路径中,显⽰给定指令的信息,包括命令别名。  type实例  //type输出别名  type ls  //输出是 ls 是 `ls --color=auto' 的别名    //type输出shell关键字  type if

  //输出是 if 是 shell 关键字  //type输出shell内嵌  type type

  //输出是 type 是 shell 内嵌  //type输出⽂件  type gedit

  //输出是 gedit 是 /usr/bin/gedit  type输出⾮⽂件且⾮命令  type adfaf

  //输出是 bash: type: frydsh: 未找到  //命令类型  alias:别名。  keyword:关键字,Shell保留字。  function:函数,Shell函数。  builtin:内建命令,Shell内建命令。  file:⽂件,磁盘⽂件,外部命令。  unfound:没有找到。

grep  grep(global search regular expression(RE) and print out the line,全⾯搜索正则表达式并把⾏打印出来)是⼀种强⼤的⽂本搜索⼯具,它能使⽤正则表达式搜索⽂本,并把匹配的⾏打印出来。若不指定任何⽂件名称,或是所给予的⽂件名为"-",则grep指令会从标准输⼊设备读取数据。  grep的⼯作⽅式是这样的,它在⼀个或多个⽂件中搜索字符串模板。如果模板包括空格,则必须被引⽤,模板后的所有字符串被看作⽂件名。搜索的结果被送到标准输出,不影响原⽂件内容。  grep可⽤于shell脚本,因为grep通过返回⼀个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的⽂件不存在,则返回2。我们利⽤这些返回值就可进⾏⼀些⾃动化的⽂本处理⼯作。  grep命令的功能是分析⼀⾏信息,若其中有我们所需要的信息,就将其拿出来。需要注意的是它以整⾏为单位进⾏数据的选取。  $grep[选项] [⽂件名]    -[选项]    //常⽤选项    -a 将 binary ⽂件以 text ⽂件的⽅式搜寻数据    -c 计算找到 '搜寻字符串' 的次数    -i 忽略⼤⼩写的不同,所以⼤⼩写视为相同    -n 顺便输出⾏号    -v 反向选择,亦即显⽰出没有 '搜寻字符串' 内容的那⼀⾏!  grep实例  //在输⼊的字符中匹配root字符串,并输出⾏号  grep -n root

  //提取/etc/passwd⽂件中,未出现 root 的⾏  grep -v /etc/passwd root

发布者:admin,转转请注明出处:http://www.yc00.com/web/1690364689a338593.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信