文件查找——藏的在深也没用

locate

依赖与事先构建好的数据库查找

         系统自动实现(周期性任务)

         手动更新数据库(updatedb)

工作特性

         查找数度快

         模糊查找

         非实时查找

         搜索的是文件的全路径,不仅仅是文件名

         可能只搜索用户具备读取和执行权限的目录

locate [OPTION]… PATTERN…

          -b:只匹配路径中的基名符合pattern的

         -c:统计共出现多少个符合查找条件的,而不是显示文件

         -r:支持使用基本正则表达式BRE

注意:数据库构建过程需要遍历整个根文件系统,极消耗资源


find

实时查找工具,通过遍历指定路径下文件系统层级结构完成文件查找

工作特性:

           查找速度快

         精确查找

         实时查找

         可能只搜索用户具备读取和执行权限的目录

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

         查找的路径:指定具体搜索目标的起始路径,默认为当前目录

         查找条件:指定查找的标准,比如文件名,大小,属主,属组,权限等等,默认是指定路径下所有文件

         处理动作:找到符合查找条件的文件后的操作,比如删除,默认为输出只标准输出

查找条件:

         1.根据文件名查找:

                   -name "patter" :精确查找符合patter的文件,要模糊查找可以使用通配符

                 -iname "patter" :忽略大小写

                          支持glob风格的通配符

                 -inum n :按inode查找

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

                 -samefile name :相同inode号的文件

                 -regex "patter" :基于正则表达式,以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称

        

         2.根据文件从属关系查找:

                  -user USERNAME :查找指定USERNAME的所有文件

                 -group GROUPNAME :查找指定GROUPNAME的所有文件

                 -nouser :查找没有USERNAME的所有文件

                 -nogroup :查找没有GROUPNAME的所有文件

                 -uid UID :查找指定UID的所有文件

                 -gid GID :查找指定GID的所有文件

        

         3.根据文件的类型查找:

                 -type TYPE:

                 f:普通文件

                 d:目录文件

                 b:块设备

                 c:字符设备

                 l:符号链接文件

                 S:套接字文件

                 p:管道文件

        

         4.组合测试:

                  与:-a  find命令的默认逻辑

                 或:-o 

                 非:-not,!

                

                 重要公式:(德摩根定律)

                 !A -a !B = !(A -o B)

                 !A -o !B = !(A -a B)

         !A-oB.png!A-aB.png


练习:找出/tmp目录下属主为非root的所有文件

find /tmp ! -user root

找出/tmp目录下文件中不包括fstab字符串的文件

find /tmp ! -name "*fstab*"

找出/tmp目录下属组不是root,而且文件名不包括fstab字符串的文件

find /tmp -not \( -user root -o -name "*fstab*" \)
find /tmp -not -user root -a -not -name "*fstab*"

         5.根据文件大小查找:

                  -size [+|-]#UNIT

                 常用单位:k,M,G

                         #UNIT:(#-1,#]

                         +#UNIT:(#,oo)

                         -#UNIT:[0,#)

         size.png

        

         6.根据时间戳查找:

                   以“天”为单位:

                 -atime [+|-]#

                         #:(#-1,#]  :过去的实际#为负数的

                         +#:(#,oo)

                         -#:[0,#)

                 -mtime

                 -ctime

        atime.png

         以“分钟”为单位

                  -amin

                 -mmin

                 -tmin

        

         7.根据文件的权限查找:

                  -perm [/|-]mode

                         mode:精确权限匹配

                         /mode:文件的任何一类用户(u.g.o)的任何权限中的任何以为(r.w.x)符合条件即满足,9位权限之间存在“或”关系

                         -mode:文件的每一类用户(u.g.o)的权限中的名义为同时满足(符合)添加才能匹配,9位权限之间存在“与”关系

                         mode权限中没给的权限,其文件位权限可有可无

        

                 例如:

                 find -perm 755 会匹配权限模式恰好是755 的文件

                 find -perm +222 只要当任意人有写权限才会匹配

                 find -perm -222 只有当每个人都有写权限时才会匹配

        

         处理动作:

                  -print:输出至标准输出,默认的动作

                 -ls:类似与对查找到的文件执行了“ls -l”命令

                 -delete:删除查找到的文件

                 -fls /path/to/somefile:把查找到的文件以长格式的信息保存至指定的文件中

                 -ok COMMAND {}\; :对查找到的每个文件执行由COMMAND指定的命令,每次操作由用户进行确认

                 -exec COMMAND {}\; :对查找到的每个文件执行由COMMAND指定的命令,不与用户交互

                 {}:用于引用查找到的文件名称自身

          注意:请小心使用-exec命令,该命令不与用户交互,如果find找到的内容与需求不匹配,-exec 后跟chmod/rm等等其他操作会带来不可避免的损失

        注意:find 传递查找到的文件至后面指定的命令时,先查找到所有符合条件的文件,并一次性传递给后面的命令;有些命令不能接受过多的参数,此时命令执行可能会失败,另一中方法可规避此问题

        find | xargs COMMAND

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

find /var -user root -user mail -type f

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

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

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

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

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

find / -nouser -nogroup -atime -7 -type f

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

find /etc -size +1M -type f

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

find /etc -not -perm 222 -type f

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

find /etc -not -perm 111 -type f

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

find /etc/init.d/ -perm 113 -type f

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/35008

(0)
megedugaomegedugao
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • 计算机操作系统与简单命令

    计算机系统的组成 硬件:主机(cpu、内存等),外部设备(输入设备键盘鼠标、输出设备显示屏;硬软盘   等等)。 软件:主要由操作系统和应用程序构成。 计算机硬件的组成部分及工作流程图 输入设备——存储器——CPU运算——输出设备   服务器主要分类有: 塔式服务器:立式PC相像 机架式服务器:统一标准宽度19英寸(48.26c…

    Linux干货 2017-02-14
  • 磁盘管理(一)磁盘分区表类型与文件系统

    概述:本章介绍磁盘分区和文件系统,深度了解linux存储数据所依赖到各个部分模块。 设备文件 I/O Ports: I/O设备地址 一切皆文件: Linux为所有的设备文件都提供了统一的操作函数接口,方法是使用数据结构struct file_operations。这个数据结构中包括许多操作函数的指针,如open()、close()、read()和write(…

    Linux干货 2016-09-01
  • The second week’s homework

    一.linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 Linux 文件与目录管理 我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 /。 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。 首先需要知道什么是绝对路径与相对路径。 绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/shar…

    Linux干货 2016-12-12
  • 设计模式 ( 十三 ) 命令模式Command(对象行为型)

    1.概述         在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。  例子1:电视机遥控器…

    Linux干货 2015-07-16
  • 用户及用户组管理使用的练习

    用户及用户组管理使用的练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 先使用who得出登陆用户,通过uniq去重。 [root@mail ~]# who | grep -E -o “^[[:alnum:]]+” | uniq root 2、取出最后登录到当前系统的用户的相关信息。 思路:首先使用who取得最后…

    Linux干货 2018-03-18
  • 硬链接和软链接的区别

                        硬链接和软链接的区别     硬链接: 1.创建命令:ln或link 2.同一文…

    Linux干货 2016-12-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 10:20

    文章架构清晰,层次分明,对常用选项有的放矢,希望下来能多加练习,熟练掌握。