Linux find 命令总结

查找文件是非常常见的系统操作,Linux可以使用find命令来进行文件查找,用好find命令,会让你感受到前所未有的痛快。find有众多选项和参数,熟练运用它们,你才能真正感受到find命令的强大,总结如下。


命令格式:

find pathname -option [-print] [-exec -ok command {} \;]

pathname 表示文件查找的基目录,若不写,默认为当前目录./


find支持按以下方面进行查找:

1、按文件名: -name ,-iname

  • -name区分大小写,-iname不区分大小写
find -name test  #查找文件名为test的文件
find -iname "*test*"  #查找文件名含有test(不区分大小写)的文件
find -name "*.py"  #查找以.py结尾的文件

2、按文件类型:-type

支持类型说明示例
f普通文件find /tmp -type f
d目录find /tmp -type d
b块设备find /tmp -type b
c字符设备find /tmp -type c
l符合链接文件find /tmp -type l
p命令管道文件find /tmp -type p
s套接字文件find /tmp -type s

^

3、按文件所有者、所属组

选项参数说明示例
-userUSERNAME根据属主查找find -user mysql
-groupGROUP根据属组查找find -group root
-uidUID根据UID查找find -uid 999
-gidGID根据GID查找find -gid 888
-nouser查找没有属主的文件find -nouser
-nogroup查找没有属组的文件find -nogroup

^

4、按文件权限:-perm

改选项后面接参数:[+|-|/] modemode表示权限,可以用数字表示,如644,用二进制可以表示为110 100 100;也可以写成u=rw,g=r,o=r。对于mode,-mode,+mode,/mode,区别如下:

参数说明示例
mode严格匹配二进制的每一位find -perm 600 #权限为600
-mode匹配所有为1的位find -perm -600 #所有者权限为rw
+mode至少匹配任意一个为1的位find -perm +600 #所有者有读或写权限
/mode至少匹配任意一个为1的位find -perm /600 #所有者有读或写权限

^

还可以将文件特殊权限SUID,SGID,SBIT也考虑进去,SUID : 4 ,SGID:2,SBIT:1,如

find -perm 4700   #查找rws------的文件
find -perm u=rws  #同4700
find -perm -0700  #查找所有者权限为rwx的文件
find -perm -u=rws  #同-4700
find -perm /0700  #查找所有者有r或w或x的文件
find -perm /u=rws  #同+4700

5、按文件时间

选项参数说明
-atime[+|-]naccess time,最近一次访问时间
-ctime[+|-]nchange time,最近一次属性修改时间
-mtime[+|-]nmodify time,最近一次内容修改时间
-amin[+|-]naccess min,最近一次访问时间
-cmin[+|-]nchange min,最近一次属性修改时间
-mmin[+|-]nmodify min,最近一次内容修改时间

^

参数说明
timen发生在距离当前时间n*24小时至(n+1)*24 小时,[n*24,(n+1)*24)
-n发生在n天以前,距离当前时间为(n+1)*24小时或者更早,[(n+1)*24,∞)
+n发生在n天以内,距离当前时间为n*24小时以内,[0,n*24)
minn发生在距离当前时间n分钟至(n+1)分钟,[n,n+1)
-n发生在n分钟以前,距离当前时间为(n+1)分钟或者更早,[n+1,∞)
+n发生在n天以内,距离当前时间为n分钟以内,[0,n)

^

5、按文件大小:-size

-size后接参数:[+|-]n[bcwkMG],+表示大于,-表示小于,bcwkMG为单位,含义见下:

这里写图片描述

find -size -2M -size +2k   #查找的文件2k到2M的文件
find -size 80c #查找大小为80个字节的文件

组合查找

-a
-o
-not,!

find -name "*.zip" -a -size +100M #也可以不写-a
find -name "*.zip" -o -size +100M
find -name "*.zip" ! -size +100M

find 结果后续处理
find -name "*test*" -type f -ls  #ls列出详细信息
find -name "*test*" -type f -exec rm {} \;  #-exec后接其他处理命令,{}表示find查询的一个结果,\;为固定写法
find -name "*test*" -type f -ok rm {} \;  #作用与-exec相同,区别在于-ok后面执行的命令需要用户确认,而-exec不需用户确认

结合管道命令 | ,xargs命令,可以实现更多的操作

find -name "*.zip" -ls | head
find / -name "mytest" | xargs -i mv {} "MyTest" #xargs-i选项表示用{}替代管道前的结果
find / -name "mytest" | xargs -I {} mv {} "MyTest" #xargs-I选项指明用{}替代管道前的结果

find的更多用法后面再做补充……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值