在Linux系统中,全部内容都是以文件的形式存在的,这就意味着所有文件的数量也是惊人的,我们如何在天文数字般的文件中找到我们需要的文件呢?这就要用到文件查找命令Find,本次我们就详细探讨一下这个命令。
Find的特性
在文件查找命令中不仅有find命令,还有locate命令,它们既然都是文件查找命令,那么它们有什么不一样的地方呢?
locate:非实时,模糊匹配,是根据全系统文件数据库进行查找的;手动生成文件数据库速度较快。
find:实时查找,精确匹配,速度慢,遍历指定目录中的所有文件完成查找。
Find的使用
命令格式:find [查找位置] [查找标准] [处理动作]
查找路径:默认为当前目录
查找标准:默认为指定目录下的所有文件
处理运转:默认显示到标准输出
下面我们分开来说明:
查找标准:
-name 文件名称:根据文件名精确查找
例:查找etc目录下的passwd文件
find /etc –name passwd
-iname 文件名称:根据文件名称查找,不区分大小写
-regex 模式:使用正则表达式进行查找
-mount: 在查找文件时不跨越文件系统mount点
-depth: 查找文件时,首先查找当前目录中的文件,然后在查找其子目录
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
-user 用户名:根据属主查找
例:查找透/etc目录下属于student的文件
find /etc –user root
-group 组名:根据属组查找
-uid UID:根据UID查找
-gid GID:根据GID查找
-nouser:查找没有属主的文件
例:查找/etc目录下没有属主的文件
find /etc -nouser
-nogroup:查找没有属组的文件
f: 普通文件
d: 目录
b: 块设备
c: 字符设备
l: 符号链接
p: 命名管道
s: 套接字文件
-type:根据文件类型查找
例:查找tmp目录下目录
find /tmp –type f
-size [+|-]n:根据文件大小查找,n为数字+单位默认单位是字节;常用单位[k|M|G]
例:查找/etc目录下大小为一兆的文件
find /etc –size 1M
-mtime [+|-]天数:查找修改天数[外|内]的文件
-ctime [+|-]天数: 查找改变天数[外|内]的文件
-atime [+|-]天数: 查找访问天数[外|内]的文件
例:查找当前目录下一周内访问的文件
find ./ -mtime -7
-perm [+|-]权限:按权限查找文件
+:任何一类用户的任何一位权限匹配即可
-:每类用户的每位权限都要匹配
没有[+|-]表示精确匹配权限
例:查找当前目录下权限为644的文件
find ./ -perm -644
-amin [+|-]时间:查找访问时间[外|内]的文件,(时间单位为分钟)
-mmin [+|-]时间:查找修改时间[外|内]的文件
-cmin [+|-]时间:查找改变时间[外|内]的文件
例:查找当前目录下10分钟内访问过的文件
find ./ -amin -10
组合条件查找:
-a:与的关系
-o:或的关系
-not:非的关系
使用方法和平时是一样的,无非是把不同条件逻辑组合在一起使用
例:查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件
find /etc -mtime -7 -a not \( -user root -o -user student\)
处理动作:
-print:显示
-ls:显示查找到的文件的详细信息
-ok COMMAND {} \;:引用命令执行查找时每次都提示您确定
-exec COMMAND {} \;:引用命令执行查找时不提示您确定,和“-ok”相反
例:查找当前目录下权限为644的文件并将其权限改为521
find ./ -perm -644 –exec chomd 521
xargs命令:
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“码数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。那么我们就来看看xargs命令是如何同find命令一起使用的
-i:是否指定替换字符-可选
例:查找当前文件夹没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组改为root
find ./ \( -nouser -o -nogroup \) -a atime -1 | xargs -i chown root:root {} \;
以上就是find命令的简单使用和展示,如果想深入的了解其更多的用法,那就请使用man命令吧!希望以上内容对大家有所帮助,谢谢!!!