文章目录

  • 文件查找之find命令
  • 选项参数对照表
  • find 命令常用选项
  • 需要了解的选项
  • 操作 - 查找之后对文件的操作
  • find、locate、whereis和which总结及适用场景吻戏
  • locate 命令介绍
  • updatedb 命令
  • whereis 命令介绍
  • which 命令介绍
  • 各命令的使用场景推荐


文件查找之find命令

find命令在linux系统中是很常用的一个命令,可以组合起来用,基于各种组合命令的查找,对磁盘里的文件进行遍历查找。缺点是效率较低、比较慢

语法格式:find [路径] [选项] [操作]

选项参数对照表

选项

含义

-name

根据文件名查找

-perm

根据文件权限查找

-prune

该选项可以排除某些查找目录【比如排除当前路径的子目录】

-user

根据文件属主查找

-group

根据文件属组查找

-mtime -n/+n

根据文件修改时间进行查找【n 表示天】

-nogroup

查找无有效属组的文件

-nouser

查找无有效属主的文件

-newer file1!file2

查找修改时间比file1新但比file2旧的文件

-type

按文件类型查找 【见下方详细选项】

-size -n/+n

按文件大小查找【见下方详细选项】

-mindepth n

从n级子目录开始搜索 【相对来说使用的较少】

-maxdepth n

最多搜索n深度的子目录 【相对来说使用的较少】


文件类型

释义

示例

f

文件

find . -type f

d

目录

find . -type d

c

字符设备文件

find . -type c

b

块设备文件

find . -type b

l

链接文件

find . -type l

p

管道文件

find . -type p


size参数

释义

-n

大小大于n的文件

+n

大小小于n的文件

n

大小等于n的文件[尽量不要使用,甚至有些版本并不支持]


mtime参数

释义

-n

n天以内修改的文件

+n

n天以外修该的文件

n

正好n天修改的文件


mmin参数

释义

-n

n分钟以内修改的文件

+n

n分钟以外修改的文件

find 命令常用选项

-name   查找/etc 目录下以conf结尾的文件        find /etc -name '*conf'

-iname  查找当前目录下文件名为 aa 的文件,不区分大小写       find . -iname aa

-user   查找文件属主为 test 的所有文件          find . -user test

-group  查找文件属组为 test 的所有文件          find . -group test

-type   根据文件类型查找 【参照上文 type 属性】
    示例:find .type d
    
-size   根据文件大小查找 【参照上文 size 属性】
    示例:find /etc -size +1M
    示例:find /etc -size -100k
    
-mtime  根据修改的天数时间查找 【参照上文 mtime 属性】
    示例:find /etc -mtime -5 -name '*.conf'   查找/etc目录下5天以内修改且以 conf 结尾的文件
    示例:find /etc -mtime +10 -name -user root  查找/etc目录下10天之前修改且属主为 root 的文件
    
-mmin   根据修改的分钟数时间查找 【参照上文 mmin 属性】
    示例:find /etc -mmin +30  查找 /etc 目录下30分钟之前修改的文件
    示例:find /etc -mmin -30  查找 /etc 目录下30分钟以内修改的目录
    
-mindepth n     表示从n级子目录开始搜索
    示例:find /etc -mindepth 3    在 /etc 沐浴露下的3级子目录开始搜索
    
-maxdepth n     表示最多搜索到 n 级子目录
    示例:find /etc -maxdepth 3 -name '*.conf'
    示例:find ./etc/ -type f -name '*.conf' -size +10k -maxdepth 2

需要了解的选项

-nouser     查找没有属主的用户
    示例:find . -type f -nouser
    
-nogroup    查找没有属组的用户
    示例:find . -type f -nogroup
    
-perm       根据文件权限查找
    示例:find . -perm 777
    
-prune      该选项可以排除某些查找目录【比如排除当前路径的子目录】,通常与 -path 一起使用,用于将特定目录排除在搜索条件之外
    示例:查找当前目录下的所有普通文件,但是排除 test 目录
         find . -path ./etc -prune -o -type f   【这里的 -o  是'或' 的意思 '-path ./etc -prune' 是作为一个命令来识别的选项 】
    示例:查找当前目录下的所有文件,但是排除 etc 和 opt 目录
         find . -path ./etc -path ./opt -prune -o -type f
    示例:查找当前目录下的所有文件,但是排除 etc 和 opt 目录,但属主为root
         find . -path ./etc -path ./opt -prune -o -type f -a -user root
    示例:查找当前目录下的所有文件,但是排除 etc 和 opt 目录,但属主为root,且文件大小必须大于500字节
         find . -path ./etc -path ./opt -prune -o -type f -a -user root -a -size +500c
         
-newer file1    查找一个比 file1 新的文件
    示例:find /etc -newer a

操作 - 查找之后对文件的操作

-print  打印输出

-exec   对搜索到的文件执行特定的操作,格式为 -exec 'command' {} \;
    示例:搜索 /etc 目录下的文件(非目录,文件名以 conf 结尾,且大于10k,然后将其删除
         find ./etc/ -type f -name '*.conf' -size +10k -exec rm -rf {} \;
    示例:将 /var/log/ 目录下以 log 结尾的文件,且更改时间在7天以上的删除
         find /var/log/ -name '*.log' -mtime +7 -exec rm -rf {} \;
    示例:搜索 /etc 目录下的文件(非目录,文件名以 conf 结尾,且大于10k,然后将其复制到 /root/conf 目录下
         find ./etc/ -type f -name '*.conf' -size +10k -exec cp {} /root/conf/ \;
         
-ok     和 exec 功能一样,只是每次操作都会给用户提示

逻辑运算符
-a      与
-o      或
-not|!  非 

示例:查找当前目录下,属主不是root的所有文件
     find . -not -user root | find . ! -user root

示例:查找当前目录下,属于root,且大小等于300字节的文件
     find . -type f -a -user root -a -size +300c
     
示例:查找当前目录下的属主为root或者以xml结尾的普通文件
     find . -type -f -a \( -user hdfs -o -name '*.xml' \)

find、locate、whereis和which总结及适用场景吻戏

find 上文已经详细介绍,这里就不再浪费篇幅了

locate 命令介绍

  • 文件查找命令,所属软件包 mlocate
  • 不同于find命令是在整个磁盘中搜索,locate 命令仅在数据库文件中查找
  • find 是默认全部匹配, locate则是默认部分匹配

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4k6gs7I-1630819378614)(media/16306001883552/16307754033861.jpg)]

updatedb 命令

可以通过手动更新数据库文件,查找最近更新的文件的数据库文件。
附:该命令执行起来会比较慢,因为它需要遍历系统中的文件进行一个对比然后再进行数据库文件的更新。

  • 用户更新 /var/lib/mlocate/mlocate.db
  • 所使用的配置文件 /etc/updatedb.conf
  • 该命令在后台 cron 计划任务重定期执行

whereis 命令介绍

查找二进制程序文件,包括源代码文件与二进制帮助文档


如何用shell脚本查询properties文件内容_shell


如何用shell脚本查询properties文件内容_shell_02

which 命令介绍

作用:仅查找二进制程序文件

如何用shell脚本查询properties文件内容_搜索_03


如何用shell脚本查询properties文件内容_find文件查找_04


各命令的使用场景推荐

如何用shell脚本查询properties文件内容_linux_05