博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
find命令基本用法及练习
阅读量:7117 次
发布时间:2019-06-28

本文共 5207 字,大约阅读时间需要 17 分钟。

find是一款实时查找工具,通过遍历指定路径完成文件查找    工作特点:           查找速度慢        精确查找        实时查找        可能只是搜索用户具备读取和执行权限的目录    语法        find [option] [查找路径] [查找条件][处理动作]            查找路径:指定具体目标路径;默认为当前目录            查找条件:指定的查找标准,可以文件名,大小 类型 权限 等标准进行                默认为找出指定路径下的所有文件            处理动作:对符合条件的文件做操作,默认输出至屏幕            指定搜索层级:                -maxdepth level 最大搜索目录深度,指定目录为第一级                -mindepth level 最小搜索目录深度            根据文件名和inode查找                -name “文件名称”:支持使用glob                    * ? [] [^]                -iname "文件名称":不区分字母大小写                  -inum n  按inode号查找                  -samefile name  相同inode号的文件                  -links n   链接数为n的文件                  -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称            根据属主、属组查找:                  -user USERNAME:查找属主为指定用户(UID)的文件                  -group GRPNAME: 查找属组为指定组(GID)的文件                  -uid UserID:查找属主为指定的UID号的文件                  -gid GroupID:查找属组为指定的GID号的文件                  -nouser:查找没有属主的文件                  -nogroup:查找没有属组的文件             根据文件类型查找                -type TYPE:                      f: 普通文件                     d: 目录文件                      l: 符号链接文件                      s:套接字文件                      b: 块设备文件                      c: 字符设备文件                      p: 管道文件             空文件或者目录                -empty                    find /app -tpye d -empty            组合条件                与:-a                或:-o                 非: -not !            德摩根定律                (非A) 或 (非B) = 非(A且B)                 (非A) 且 (非B) = 非(A或B)                ps:                    实例:                        !A -a !B = !(A -o B)                        !A -o !B = !(A -a B)    find 示例        find -name snow.png         find -iname snow.png         find / -name  “*.txt”         find /var –name “*log*”         find  -user joe  -group joe         find -user joe -not -group joe         find -user joe -o -user jane         find -not  \(  -user joe -o -user jane  \)         find / -user joe -o -uid 500    找出/tmp目录下,属主不是root,且文件名不以f开头的文件         find /tmp \( -not -user root -a -not -name 'f*' \) -ls         find /tmp -not \( -user root -o -name 'f*' \)  –ls     排除目录         示例:              查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件                find /etc -path ‘/etc/sane.d’ -a –prune -o -name “*.conf”               查找/etc/下,除/etc/sane.d和/etc/fonts两个目录的所有.conf后缀的文件                find /etc \(–path ‘/etc/sane.d’ –o –path ’/etc/fonts’ \)   -a -prune –o -name “*.conf”    根据文件大小来查找:          -size [+|-]#UNIT               常用单位:k, M, G,c(byte)          #UNIT: (#-1, #]               如:6k 表示(5k,6k]          -#UNIT:[0,#-1]               如:-6k 表示[0,5k]          +#UNIT:(#,∞)               如:+6k 表示(6k,∞)      根据时间戳:          以“天”为单位;                 -atime [+|-]#,                         #: [#,#+1)                       +#: [#+1,∞]                       -#: [0,#)                  -mtime                  -ctime          以“分钟”为单位:                  -amin                  -mmin                  -cmin     根据权限查找:            -perm [/|-]MODE              MODE: 精确权限匹配              /MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从centos7开始淘汰              -MODE:每一类对象都必须同时拥有指定权限,与关系                     0 表示不关注                  find -perm 755 会匹配权限模式恰好是755的文件                 只要当任意人有写权限时,find -perm +222就会匹配                 只有当每个人都有写权限时,find -perm -222才会匹配                 只有当其它人(other)有写权限时,find -perm -002才会匹配      处理动作            -print:默认的处理动作,显示至屏幕         -ls:类似于对查找到的文件执行“ls -l”命令         -delete:删除查找到的文件         -fls file:查找到的所有文件的长格式信息保存至指定文件中         -ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于 每个文件执行命令之前,都会交互式要求用户确认         -exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令  不进行提示直接处理要注意安全        {}: 用于引用查找到的文件名称自身         find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性 传递给后面的命令        由于很多命令不支持管道|来传递参数,而日常工作中有这个必要,所以就有了 xargs命令         xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符 或回车符将 stdin 的数据分隔成为arguments          注意:文件名或者是其他意义的名词内含有空格符的情况         有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决             示例:  ls f* |xargs                   rm   find /sbin -perm +700 |ls -l       这个命令是错误的                  find /sbin -perm +7000 | xargs ls –l         find和xargs格式:find | xargs COMMAND     ps:        备份配置文件,添加.orig这个扩展名              find  -name  “*.conf”  -exec  cp {}  {}.orig  \;         提示删除存在时间超过3天以上的joe的临时文件              find /tmp -ctime +3 -user joe -ok rm {} \;         在主目录中寻找可被其它用户写入的文件             find ~ -perm -002  -exec chmod o-w {} \;         查找/data下的权限为644,后缀为sh的普通文件,增加执行权限              find /data –type  f -perm 644  -name “*.sh” –exec chmod 755 {} \;         查看/home的目录  find  /home –type d -ls

练习题:

1、查找/var目录下属主为root,且属组为mail的所有文件

find /var -user root -group mail

find命令基本用法及练习

2、查找/var目录下不属于root、lp、gdm的所有文件

find /var -not \( -user root -o -user lp -o -user gdm \)

find命令基本用法及练习

3、查找/var目录下最近一周内其内容修改过,同时属主不为root,也不是 postfix的文件

find /var -not \( -user root -o -user  postfix \) -mtime -7

find命令基本用法及练习

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件

find /  -nogroup -nouser -atime -7 -ls

find命令基本用法及练习

5、查找/etc目录下大于1M且类型为普通文件的所有文件

find /etc -size +1M -type f

find命令基本用法及练习

6、查找/etc目录下所有用户都没有写权限的文件

find /etc -not -perm /222

find命令基本用法及练习

7、查找/etc目录下至少有一类用户没有执行权限的文件

#centos7 +号使用/替代find /etc -not -perm /222

find命令基本用法及练习

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件

find /etc/init.d -perm -113

find命令基本用法及练习

转载于:https://blog.51cto.com/11010461/2103481

你可能感兴趣的文章
Java模拟Delegate
查看>>
我的友情链接
查看>>
linux安装oracle数据库无法启动安装界面的问题
查看>>
ioS开发知识(二十四)
查看>>
Linux计划书
查看>>
mysql查询锁
查看>>
HAProxy的调度算法
查看>>
快速生成树配置
查看>>
Linux网卡绑定技术(详解版)
查看>>
Telerik控件集-2019.R1.SP1.All
查看>>
Log4j日志输出详解
查看>>
移动UI框架
查看>>
提升Python学习效率的方法
查看>>
vim命令合集
查看>>
firewall防火墙案例实践
查看>>
决心书
查看>>
rsync同步操作 、 发布rsync共享 、 inotify实时同步 、 Split分离解析
查看>>
redis集群搭建
查看>>
OmniCore JSON-RPC API官方文档中文版
查看>>
毕业5年,我是怎么成为年薪30W的运维工程师
查看>>