Linux文件搜索命令

一、 which

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

在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
在这里插入图片描述

二、whereis

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

命令选项

  • -b:只查找可执行文件
  • -m:只查找帮助文件
    在这里插入图片描述

三、locate&&find

(一)locate
  需要安装 yum install mlocate -y
  依赖于事先构建好的索引库;
  手动更新数据库(updatedb);
  工作特性: 查找速度快;模糊查找;非实时查找;

命令语法
locate [OPTION]… PATTERN…

命令选项

  • -b:只匹配路径中的基名

  • -c:统计出共有多少个符合条件的文件

    索引构建过程需要遍历整个根文件系统,极消耗资源;
    
(二)find
搜索文件

实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找;

工作特性
查找速度略慢;精确查找; 实时查找;

命令用法
find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

查找起始路径:指定具体搜索目标起始路径,默认为当前目录
查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行,默认为找出指定路径下的所有文件
处理动作:对符合查找条件的文件做出的操作,例如删除等操作,默认为输出至标准输出

查找条件:
表达式:
选项
测试
组合测试:-a(与);-o(或);-not,!(非)

1、根据文件名查找

  • -name “pattern” :支持通配符 *, ?, [], [^]

  • -iname “pattern” :不区分大小写

  • -regex “pattern”:基于正则表达式模式查找文件,匹配是整个路径,而非其名
    在这里插入图片描述
    2、根据文件从属关系查找

  • -user :查找属主指定用户的所有文件

  • -group :查找属组指定组的所有文件

  • -uid UID:查找属主指定的UID的所有文件

  • -gid GID:查找属组指定的GID的所有文件

  • -nouser:查找没有属主的文件

  • -nogroup:查找没有属组的文件
    在这里插入图片描述
    3、根据文件的类型查找
    -type TYPE

  • f: 普通文件

  • d: 目录文件

  • l:符号链接文件

  • b:块设备文件

  • c:字符设备文件

  • p:管道文件

  • s:socket套接字文件

4、根据文件的大小查找
-size [+|-]#UNIT

常用单位:k, M, G

  • #UNIT:(#-1, #]
  • -#UNIT:[0,#-1]
  • +#UNIT:(#, ∞)

5、根据时间戳查找

以“天”为单位:

  • -atime [+|-]#

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

  • -mtime [+|-]#

  • -ctime [+|-]#

以“分钟”为单位

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

6、根据文件权限查找
-perm [/|-]mode

权限对象:三类 属主 属组 其他
权限位: 读 写 执行 r w x 4 2 1

  • mode:(421)精确权限匹配;
  • /mode:(/421)任何一类用户的权限中的任何一位(r,w,x)符合条件即满足; 9位权限之间存在“或”关系;
  • -mode:(-421)每一类用户的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;

7、目录层级
基于目录层级查找:
-path

基于目录深度查找:

  • -depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
  • -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

处理动作:

  • -print:输出至标准输出;默认的动作
  • -delete:删除查找到的文件
  • -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件
  • -ok COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认
  • -exec COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令
  • -xargs -0 commond {} ;规避有些命令不能接受过长参数执行失败的问题

练习

  • 查找/var目录下属主为root,且属组为mail的所有文件或目录
    在这里插入图片描述
  • 查找/etc目录下大于1M且类型为普通文件的所有文件
    在这里插入图片描述
  • 查找/etc目录下所有用户都没有写权限的文件在这里插入图片描述
  • 查找/etc目录至少有一类用户没有执行权限的文件
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值