千家信息网

如何理解find命令

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章给大家分享的是有关如何理解find命令,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。find命令:find - search f
千家信息网最后更新 2026年11月01日如何理解find命令

本篇文章给大家分享的是有关如何理解find命令,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

find命令:

find - search for files in a directory hierarchy

find [OPTIONS...] [查找路径] [查找条件] [处理动作]

查找路径:默认为当前工作目录,可以指定具体的目录路径;

查找条件:进行本次搜索的标准,可以是文件名、文件大小、文件类型、文件权限等等;默认是指定目录中的所有文件;

处理动作:对于符合条件的文件进行某个处理操作;默认将查找结果输出到显示器;

根据文件名查找:

-name 文件名称,支持使用Globbing,(*, ?, [], [^]),根据关键字查找

例:[root@localhost test]# find . -name "*.log"

./log_link.log

./log2014.log

-iname 文件名称,忽略字母大小写,支持使用Globbing,(*, ?, [], [^])

例:find / -iname qin

根据文件的inode编号查找:

-inum inode编号:通过给定的inode编号查找对应的文件名及路径;

-samefile name:通过给定的文件名查找对应的inode编号,进而确定所有具有该inode编号的文件名及路径;

-links n:查找链接数为n的所有文件;

根据正则表达式查找:

-regex pattern:以pattern匹配整个文件路径字符串,而不仅仅是给定文件的名称;

根据文件的属主和属组进行查找:

-user uname:根据属主为指定用户的用户名进行查找

-uid UID:根据属主为某个UID进行查找

-group gname:

-gid GID:

-nogroup:在文件的属组上没有组对应的组名;

-nouser:在文件的属主上没有用户对应的用户名;

根据文件的类型查找:

-type 文件类型:

b:块设备

c:字符设备

d:目录文件

f:普通文件

l:符号链接文件

p:管道文件

s:套接字文件

-xtype 文件类型:符号链接文件的匹配需要配合其他的选项;

根据时间戳进行查找:

以天为单位:

-atime [+|-]n:根据访问时间查找

-ctime [+|-]n:根据改变时间查找

-mtime [+|-]n:根据修改时间查找

n:[n,n+1)

+n:[n+1,+∞)

-n:[now,n)

以分钟为单位:

-amin [+|-]n

-cmin [+|-]n

-mmin [+|-]n

例子:查找/etc目录下最近一周内内容修改过且不属于root及suse用户的文件;

find /etc -ctime -7 -a -user root -a -user suse

例:在/ l o g s目录中查找更改时间在5日以前的文件并删除它们:

find logs -type f -mtime +5 -exec -ok rm {} \;

根据文件的大小进行查找:

-size [+|-]n[cwbkMG]

n:(n-1,n]

-n:[0,n-1]

+n:(n,+∞)

例子:

find -size +2k

当前目录下所有大于2KB的文件;

find -size 2k

当前目录下所有1KB-2KB之间的文件;

find -size -2k

当前目录下所有小于1KB的文件;

组合条件:

-a:逻辑与,默认可以省略;

-o:逻辑或

-not, !:逻辑非

例:查找/usr目录下不属于root、bin、centos等用户的文件;

find /usr -not -user root -a -not -user bin -a -not -user centos

逻辑组合条件遵循德摩根定律:

非(A 与 B) == 非A 或 非B

非(A 或 B) == 非A 与 非B

根据权限查找:

-perm [/|-]mode

mode:精确匹配指定的权限

/mode:隐含了逻辑或的关系,任何一个权限位的权限中只要能有一个权限匹配,即可满足条件;

-mode:隐含了逻辑与的关系,每一个权限位的权限中都必须同时包含指定权限位,才能满足条件;

例:查找/etc/rc.d/init.d目录下,所有用户都有执行权限并且其他用户有写权限的文件;

find /etc/rc.d/init.d -prem /111 -a -perm -002

所有都有 取反 任意一个没有

! ( a与b与c ) = !a 或 !b 或 !c

所有都没有 取反 任意一个有

!( !a与!b与!c ) = a 或 b 或 c

处理动作:

-print:输出到显示屏幕,默认的动作;

-ls:对与查找到的结果执行ls -li命令显示;

例:查找/etc目录下所有用户都没有写权限的文件,并显示出其详细信息;

find /etc -not -perm /222 -ls

-exec COMMAND {} \;:

-ok COMMAND {} \;:

对于查找到的结果执行COMMAND命令;

区别:

-exec是非交互式的;

-ok是交互式的;

{}:占位符,用来引用被find命令查找到的所有的文件的路径信息;

例:查找当前系统上没有属主或属组,且最近一个月内曾被访问过的文件,并将其属主属组均修改为root;

find / -nouser -o nogroup -a -atime -30 -exec chown root:root {} \

-exec和-ok的取代执行操作:

chmod a-r $(find -perm -444 -type f)

find -perm -444 -type f | xargs chmod a-r

注意:管道输送的是纯字符串信息,所以如果管道之后的命令不是处理字符串的命令,需要使用xargs命令将其转换成能够被后面命令处理的参数;

例:在/tmp中查找所有的*.h,并在这些文件中查找"SYSCALL_VECTOR",最后打印出所有包含"SYSCALL_VECTOR"的文件名

find /tmp -name "*.h" | xargs -n50 grep SYSCALL_VECTOR

以上就是如何理解find命令,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

文件 权限 目录 命令 用户 条件 路径 文件名 逻辑 处理 时间 动作 字符 类型 信息 名称 大小 字符串 管道 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海睿民互联网科技有限公司 河南真二互联网科技有限公司 与互联网科技公司 互联网科技开发公司 浩特互联网科技 碳银互联网科技有限公司 互联网金融科技委员会 哈尔滨秒房互联网科技有限公司 老年人脱离互联网科技的作文 互联网教育科技公司vipkid 受益于互联网科技的高速发展 科技互联网大厂 互联网还是高科技吗 广州市恰铎互联网科技有限公司 允成互联网科技有限公司融资 深圳艾果互联网通讯科技 上海钢联属于互联网科技股吗 张召忠谈中国互联网科技 互联网科技数字货币 北京天晋互联网科技有限公司 科技类互联网 北京互联网科技公司 上海致骋互联网科技 重庆科技学院互联网 卓越科技互联网 招聘 老年人脱离互联网科技的作文 中盈科技互联网信息有限公司 互联网经济与金融科技 广州千川互联网科技有限公司 中天科技中国工业互联网
0