Linux学习——文件搜索命令

搜索可执行文件

1、which 查找可执行文件,搜索命令所在路径以及别名

PATH

在这里插入图片描述

2、whereis 只能用于搜索程序名 搜索命令所在的路径以及帮助文档所在位置

-b:只查找可执行文件

-m:只查找帮助文件
在这里插入图片描述

3、locate

依赖于事先构建好的索引库,定时更新索引库 updatedb
查找速度快,模糊查找

注:许多虚拟机中直接使用发现没有此条命令,可在yum仓库中安装

执行此条命令:
yum install  mlocate  -y

若显示下载失败,可重新挂载:mount /dev/sr0 /media/
然后再重新安装   
  1. -b:只匹配路径中的基名 [basename] 【最右侧的文件或目录名】
    在这里插入图片描述
  2. -c:统计总共有多少符合条件个文件
    在这里插入图片描述

4、find: 搜索文件

find [options] [查找的起始路径] [查找条件] [处理动作]

1、 查找的起始路径:指定具体的搜索目录,默认为当前目录

2、 查找条件:指定查找的标准,大小,文件名,类型。默认是指定路径下的所有文件

3、 处理动作:符合查找条件的文件做出的操作,例如cp,rm,默认为输出到标准输出

查找条件

1、表达式:

与:-a
或:-o
非:-not 或者 !

2、条件:

  • 按文件名查找

    1. -name “pattern” —需要加引号
    2. 支持通配符 * ? [] [^]
    3. -iname “pattern” 不区分大小写
    4. 基于正则表达式模式查找
    5. -regex “pattern” 匹配整个路径 而不是文件名
      在这里插入图片描述
  • 根据文件的从属关系查找

    1. -user 属主
      在这里插入图片描述
    2. -group 属组
    3. -uid GID 属主ID
    4. -gid GID 属组ID
    5. -nouser 没有属主的文件
      在这里插入图片描述
    6. -nogroup 没有属组的文件
  • 根据文件类型查找

-type TYPE

  1. f:普通文件
    在这里插入图片描述

  2. d:目录

  3. b:块设备文件

  4. l:链接文件

  5. c:字符设备文件

  6. p:管道文件

  7. s:socket套接字文件

  • 根据文件大小查找

    1. -size [+|-] #UNIT

    2. #UNIT:(#-1,#]
      在这里插入图片描述

    3. -#UNIT:[0,#-1)
      在这里插入图片描述

    4. +#UNIT:(#,OO)
      在这里插入图片描述
      注:在此例中,所有文件大小均大于3,所以 find -size +1 与 find -size +3 执行结果相同

  • 根据时间戳查找

以天为单位

1、-atime

2、-mtime

3、-ctime    [+|-]#文件最后改变时间

          #:[#,#-1):        10          大于等于10天前,小于9天前
          -#:(#,0):        -10          最后的访问时间在10天以内
          +#:(oo,#-1]:     +10          最后的访问时间在9天以前,包括9天

例:
在这里插入图片描述

以分钟为单位

    -amin           [+|-]#
    -mmin          [+|-]#
    -cmin           [+|-]#

在这里插入图片描述

  • 根据文件权限查找

-perm mode 777 rwx 421

权限位: 读 写 执行 r w x 4 2 1

  mode 精确查找
 /mode:任何一个权限对象中满足其一即可
 -mode:所有都需要满足

例:
    421  精确,9位权限位所有的权限位保持一致
   /421 只要包含,且9位权限中每个权限中有一个满足即可     或
   -421 只要包含,且9位权限中每个权限均要满足            与

在这里插入图片描述
在这里插入图片描述

  • 根据目录层级

-path 基于目录层级

基于目录深度查找:

-maxdepth 最大深度
-mindepth 最小深度

例:
     查找/tmp目录下第三层目录中的文件:
     
         [root@nebula tmp]# find /tmp/ -maxdepth 3   -mindepth 3 -name "file*"
         /tmp/test/test/file_test                            【错误】
         [root@nebula tmp]# find /tmp/ -maxdepth 4   -mindepth 4 -name "file*"
         /tmp/test/test/test/file_new                        【正确】
         
又如:   [root@nebula tmp]# find  -maxdepth  4  -mindepth 4  -name "file*"

注:此时不指定查找路径,默认从当前目录下开始查找

3、处理动作

1. -print: 默认动作,输出到标准输出

2. -fls  /path/to/somefile:将查找到的文件的长格式信息写入到指定文件中

3. -ok  commond  {} \;  对执行的每个文件做commond操作,每次的操作需要用户确认

4. -exec commond {} \; 对执行的每个文件做commond操作

6. -xargs -0 commond {} \;

在这里插入图片描述

例题:

1)查找/var目录下属主为root,且属组为mail的所有文件或目录;
在这里插入图片描述
2) 查找/etc目录下大于1M且类型为普通文件的所有文件;
在这里插入图片描述
3) 查找/etc目录下所有用户都没有写权限的文件;
在这里插入图片描述
4) 查找/etc目录至少有一类用户没有执行权限的文件:
在这里插入图片描述
ifconfig grep ip地址
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值