find命令详解
实时查找工具,通过遍历指定路径下的文件系统完成文件查找
工作特点:
查找速度慢
精确查找
实时查找
使用
find 选项 路径 [查找条件+处理动作]
查找路径:指的是具体目录路径,默认是当前文件夹
查找标准:指定查找标准(文件名、大小、类型、权限等),默认查找所有文件
处理动作:对符合条件的文件做一定的操作,默认的是输出在屏幕上
查找条件
根据文件名查找写
-name 文件名
-iname:忽略大小
-regex “pattern”:以patter匹配整个文件路径字符串,而不仅仅是文件名称
根据属组和属组进行查询
-user:查找属主为指定用户的文件
-group:查找属组为指定组的文件
-uid:查找属主为指定uid的文件
-gid:查找属组为指定gid的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
根据文件类型进行查找
-type TYPE
f、d、l、s、b、c、p
根据文件大小来查找
-size [+|-]N[bcwkMG]
根据时间戳来查找
天
-atime [+|-]N
-mtime
-ctime
分钟
-amin
-cmin
-mmin
根据权限来查找
-perm [+|-] MODE
MODE:精确权限匹配
/MODE:任何一类对象的权限只要有一位匹配即可
-MODE:每一类对象都必须同时拥有为其指定的标准
组合条件
与:-a
或:-o
非:-not
案例:找出/tmp目录下,属主不是root,且文件名不是fstab的文件
find /tmp \(-not -user root -a -not -name fstab\)
处理动作
-print:默认的动作,显示至屏幕上
-ls
-delete:删除查找到的文件
-fls /path/to/somefile:将查找到的所有文件的长格式的信息保存至指定文件中
-ok COMMAND {}\:对查找到的每个文件执行COMMAND指令,对于每个文件执行命令之前都会交换式要求用户确认
-exec COMMAND {}\:对查找到的每个文件执行COMMAND指令,大括号用于引用查找到的文件名称自身
注意
find传递查找到的文件到后面指定命令时,会将所有符合条件的文件一次性传递给后面的指令。另一种方式
find | xargs COMMAND
练习题
1.查找/var目录下属主为root,且属组为mail的所有文件或目录
find /var -user root -group mail
2.查找/usr目录下属主不属于root,bin,hadoop的所有文件或目录
[root@localhost ~]# find /usr \( -not -user root -a -not -user bin -a -not -user hadoop \) -ls
3.查找/etc目录下最近一周内容被访问过的文件或目录
find /etc -atime -7
4.查找当前系统上没有属主或属组,且最近一周被访问过的文件或目录
find / \( -nouser -o -nogroup \) -atime -7 -ls
5.查找/etc目录下大于1M且类型为普通文件的所有文件或目录
find /etc -size +1M -a -type f -ls
6.查找/etc目录下所有用户都没有写权限的文件
find /etc -not -perm /222 -ls
/MODE:任何一类对象的权限只要有一位匹配即可
-MODE:每一类对象都必须同时拥有为其指定的标准
7.查找/etc目录下至少一类用户没有执行权限的文件
find /etc -not -perm -111
8.查找/etc/init.d目录下,所有用户都有执行权限,且其他用户有写权限的文件
find /etc/init.d/ -perm -113
大家动动小手点点关注吧,博主希望能与大家交流更多的知识!
博主个人博客:www.save1314.vip