美文网首页
Linux搜索命令

Linux搜索命令

作者: 黑曼巴yk | 来源:发表于2019-10-27 23:33 被阅读0次

文件搜索locate

  • centos7 默认没有安装locate命令,需要手动安装yum -y install mlocate
  • locate 命令的格式非常简单:locate 文件名
  • 它的特点是搜索速度非常快,并且只能搜索文件名,它在维护一个本地的数据库。
  • 存储在/var/lib/mlocate文件中,更新数据库使用updatedb命令来更新
  • 本地数据库自动更新的策略是每天更新一次,所以当天新建的文件无法被搜索到的。需要手动更新数据库
  • locate搜索范围配置文件为/etc/updatedb.conf
# 代表本配置文件的刷选规则生效
PRUNE_BIND_MOUNTS = "yes"
# 不刷选下面这些文件系统(linux为ext2,ext3,ext4)
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs fuse.glusterfs ceph fuse.ceph"
# 不搜索包含下面关键字的文件
PRUNENAMES = ".git .hg .svn"
# 不搜索下面这些目录中更新的文件
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp /var/lib/ceph"

命令的搜索命令

  • whereis
    查询系统命令所在的文件夹目录,同时还可以看到帮助文档的位置
$ whereis ls
> /bin/ls
  • which
    查询系统所在命令,同时会显示系统的别名
$ which ls
> ls: aliased to ls -G
  • PATH
    shell变量, 执行命令的时候会去这个环境变量下寻找变量
➜  aliFE echo $PATH
> /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:/Library/apache-maven-3.5.3/bin:/usr/local/mysql/bin

find

相比之前的locate,whereis,which,find命令非常强大。但是带来的结果是使用起来比较复杂,因为是做全文搜索,所以搜索的速度比较慢,而且耗费资源,如果是线上的环境,可能造成线上服务宕机。
使用方式为: find [搜索范围] [搜索条件]

-name 搜索某个文件
find / -name proxy.sh

这段话的含义是搜索根路径/下的名称为proxy.sh的文件。

模糊匹配

如果我们想要进行模糊搜索,需要使用通配符

  • linux中的通配符
* 匹配任意字符
? 匹配一个字符
[] 匹配任意一个中括号内的字符
  • 通配符需要使用引号括起来
# 需要使用引号括起来
[root@iZbp1ge7stkcnj5044oa81Z ~]# find ./ -name proxy*
> find: paths must precede expression: proxy.sh2

[root@iZbp1ge7stkcnj5044oa81Z ~]# find ./ -name 'proxy*'
./proxy.sh
./proxy.sh2
  • 中括号[]
    中括号和正则中的[]意义相似。比如[a-z]表示任意小写的英文字符
[root@iZbp1ge7stkcnj5044oa81Z ~]# find ./ -name '[a-z].sh'
./a.sh
./b.sh
按照时间搜索
find /root -iname proxy.sh
  • mtime 修改文件的内容
    查找10天前修改的文件,一般可以用在日志文件的查找。
find /root-mtime +10

-10 代表10天内修改的文件
10 代表第10天前当天修改的文件
+10 代表10天之前修改的文件

  • ctime 修改文件的属性
  • atime 文件的访问时间更改
按照文件大小搜索
find ./ size 25k

-25k 小于25k
+25k 大于25k
+25M 大于25M
-25M 小于25M

逻辑命令

-a and 逻辑与, 两个条件都满足
-o or 逻辑或, 两个条件满足一个即可

# 找出 当前文件 大于5k小于25k的文件
find ./ -size +5k -a -size -25k
-exec

find命令一般查找出来不仅仅是看看而已,还需要进一步操作,这时候exec作用就显示出来了
-exec参数后面跟的是command命令,它的意义是以;为结束标志的。考虑到;在不同系统有不同意义,所以前面加上\

# 代表前面查找出的文件, 使用后面的命令进行处理
find ./ -size +5k -a -size -25k -exec ls -lh {} \;
其他
  • -i 搜索不区分大小写

grep

搜索字符串的命令。格式为grep[选项] 字符串 文件名

  • i 忽略大小写
  • v忽略指定字符串
[root@iZbp1ge7stkcnj5044oa81Z ~]# grep "echo" proxy.sh
echo 'hello dankun'
echo "===== restart squid ====="
grep和find区别
  • find是在系统搜索符合条件的文件名,默认是全文匹配,如果需要模糊匹配需要使用通配符,通配符是完全匹配。

  • grep是在文件在搜索符合条件的字符串,默认是模糊匹配,如果需要更多的包含匹配,需要使用正则表达式进行匹配。

  • 什么情况下使用通配符,什么时候使用正则表达式
    搜索文件名,需要完全匹配,使用通配符
    搜索文件中内容是包含匹配,使用正则表达式来进行匹配

相关文章

  • 碎碎念 b

    Linux中的搜索命令 文件搜索命令locate 命令搜索命令 忘记是啥了 find命令,其中find命令有好多后...

  • Linux达人养成计划 I--学习笔记

    本篇涉及的知识点 Linux简介Linux安装Linux命令基本格式及文件处理命令Linux 文件搜索命令Linx...

  • Linux笔记

    1. linux基本命令 搜索 搜索java命令的路径 which -a java 比find快的locate搜索...

  • hadoop学习2

    Linux 的搜索命令 命令:find 任何搜索搜索范围越大占用的资源越多 所以在搜索的时候尽量缩小搜索的范围 语...

  • php的学习路程

    一.Linux方面 Linux常用命令 1. 文件处理命令 2. 权限管理命令 3. 帮助命令 4. 文件搜索命令...

  • grep命令 你可以理解为过滤

    [linux grep命令]1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文...

  • linux grep命令

    linux grep命令 1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文...

  • linux安装gitlab

    注意:linux命令1、全局搜索文件find / -name (文件名)2、显示输入过的命令history3、搜索...

  • 14.搜索、帮助与查询

    在Linux中,有几种搜索命令可以很快速的搜索出你想知道的内容。 搜索命令: find 用法:find /etc...

  • 基础篇

    Linux学习 一、find命令 1、搜索文件的命令:which、whereis、locate、find a、wh...

网友评论

      本文标题:Linux搜索命令

      本文链接:https://www.haomeiwen.com/subject/vlsmvctx.html