linux关于搜索的常用命令

linux的常用搜索命令,今天搜索的时候有点弄混了,所以找了一篇总结的文章,转自https://www.jianshu.com/p/95be6e4cff34, 并做了小的改动
linux常用的搜索命令主要有locate,whereis,find,grep,type那么他们如何使用,有什么区别呢?下面就让我们一起来学习一下。

1.locate

  • locate命令主要是在后台数据库中按文件名进行搜索,搜索速度更快。数据库为var/lib/mlocate。搜索的时候需要先用“updatedb”更新一下数据库,否则新建的文件可能搜不到。
  • locate命令的配置文件为/etc/updatedb.conf,内容为:
    PRUNE_BIND_MOUNTS="yes"
    PRUNENAMES=".git .bzr .hg .svn"
    PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs"
    PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre tmpfs usbfs udf fuse.glusterfs fuse.sshfs curlftpfs ecryptfs fusesmb devtmpfs"
    其中“PRUNE_BIND_MOUNTS”为搜索限制配置。yes的时候表示下面的搜索限制配置全部生效,no的时候表示不生效。
    “PRUNENAMES”表示搜索时不搜索的文件类型。上面的内容就表示不搜索“.get,.bzr,.hg,.svn”类型的文件。
    “PRUNEFS”表示搜索时不搜索的文件系统。
    “PRUNEPATHS”表示搜索时不搜索的路径。
  • locate的特点就是速度快,耗费系统资源小。但是功能单一,只能搜索文件名。

2.whereis和which

  • whereis用来搜索命令所在路径及帮助文档所在位置。它还有两个选项:
    -b:只查找可执行文件
    -m:只查找帮助文件
    举个例子来看下,
    命令:whereis ls
    结果:ls: /bin/ls /usr/share/man/man1/ls.1.gz表明ls命令在bin/ls,帮助文档为/usr/share/man/man1/ls.1.gz
    加选项‘-b’就只显示/bin/ls,加‘-m’就只显示/usr/share/man/man1/ls.1.gz
  • whereis只能用来搜索系统命令,不能用来搜索文件。
  • 借此再看2个常用命令:
    命令:who am i 结果:chenfei pts/0 2016-05-29 16:36 (10.0.2.2)
    命令:whatis ls 结果:ls (1) - list directory contents
    命令的意思根据英文就能理解个差不多了。
  • 下面再来说一下which。which命令也是用来搜索系统命令的,它不能显示命令的帮助文档的路径,不过它可以显示命令的别名,前提是别名存在的话。

3.find

  • find用来搜索文件,命令格式:find [搜索范围] [搜索条件]
  • find / -name test.php 这条命令表示搜索根目录下的‘test.php’文件,如果存在'test.php.bak'也不会搜索到。要想进行模糊搜索,需要使用通配符。
    (1)‘*’ 匹配任意内容。 find /root -name "test.php*"搜索root目录下的包含‘test.php’的文件。如果‘test.php.bak’也在root目录下,也可以被搜到。
    (2)‘?’匹配任意一个字符。
    (3)‘[]’匹配任意一个中括号之内的字符。find /root -name "ab[cd]",这种情况下如果root目录下存在abc和abd文件,那么两者都可以被搜到。
  • find /root -iname "tEst.php"不区分大小写搜索。
  • find /root -user root搜索所有者为root的文件
  • find /root -nouser搜索没有所有者的文件
  • find /var/log/ -mtime +10搜索10天前修改的文件。
    “-10” 10天内修改文件;“10”10天那天修改文件;“+10”10天前修改的文件。
    还有几个类似选项:“-atime”文件访问时间;“-ctime”改变文件属性;
  • find . -size 25k搜索当前目录下文件大小是25kb的文件。
    “-25k”小于25kb的文件;“25k”等于25kb的文件;“+25k”大于25kb的文件
  • find . -inum 262332查找当前目录下i节点是262332的文件。
  • find /root -size +20k -a -size -50k搜索root目录下,大于20kb并且小于50kb的文件。
    “-a” and 逻辑与,两个条件都满足;“-o” or 逻辑或,两个条件满足一个即可。
  • find /root -size +20k -a -size -50k -exec ls -lh {} \;搜索root目录下,大于20kb并且小于50kb的文件,并显示详细信息。
    -exec 命令 {} \;表示对搜索结果执行相应的操作。
  • find命令功能很强大,但是相对locate命令,它消耗系统资源也比较严重,尤其是当搜索范围比较大的时候。

4.grep

  • 格式:gerp [选项] 字符串 文件名
    grep命令主要用来在文件当中匹配符合条件的字符串。
    “-i”表示忽略大小写;“-v”表示排除指定字符串。
  • 再来看一下它和‘find’的区别:
    find:在系统中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。
    grep:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配(模糊匹配)。
  • 通过管道符将find和grep命令结合起来使用有时会起到事半功倍的效果。

5. type

type命令用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。

以上就是linux几个常用搜索的命令,你学会了吗?

全部评论

相关推荐

fRank1e:吓得我不敢去外包了,但是目前也只有外包这一个实习,我还要继续去吗
点赞 评论 收藏
分享
就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务