文件的查找工具find

有的时候我们需要快速查找一些文件,但是我们却不知道这个文件在哪的时候,就急切的需要一个工具来帮助我们,这时候find就诞生了。Find能实现精确查找,虽然速度略慢,但是并不妨碍我们使用,下面就介绍一下find的使用方法。
(一) 基于时间戳的查找
          假如需要查看七天前的文件,但是总不能一一的去看时间查找,这点和windows不一样,windows可能是默认的按时间先后顺序排列的,所以在这里我们就要基于命令去查找了。以天为单位的选项分别有atime,mtime,ctime.
          分别是访问时间,文件数据修改时间,文件元数据修改时间。下面举例说明,以便让大家更好的明白。
          Eg: 查询/app目录下五天以内被访问的文件
  文件的查找工具find
          解释:-atime 就是访问时间,-5就是指0到5天以内的,-ls就是长列出所查到的文件,这里需要说明一下时间的问题。如果是按时间或者天数来算的话,-5是[0,5),意思就是大于等于0  且小于5,+5是[6,无穷),意思就是大于等于6,直接就一个5的话,就是[5,6),意思就是大于等于5且小于6.
(二) 基于文件用户名查找
          假如你想找user是joe的文件,只需选项-user.
          Eg:查找/app下所属人为liubei的文件
 文件的查找工具find
       解释:/app/* 就是查找/app下的文件,不包括app目录本身,小编之前犯了错误,把目录本身也截取下来了,在这里提醒广大用户,不要犯同样的错误,但是如果你想要把目录也一起算的话就把/*去掉就可以了。-user就是基于用户名查找。
(三) 基于文件大小查找
          假如想查找文件大于1M的,只需选项-size
          Eg:查/app下大于1M的文件
          首先看一下app下的文件大小哦,这里文件大于1M的只有a1
 文件的查找工具find
          下面开始截取符合规定的文件
 文件的查找工具find  
          解释:-size就是基于文件大小查找,+1M就是(1,无穷),意思就是大于1M的文件。
(四) 基于文件类型查找
          假如想查找/app下的普通文件,只需选项-type f.
          Eg:查找/app下的目录文件
 文件的查找工具find
          解释:-type就是基于类型查找,d就是目录的意思,f为普通文件,l符号链接文件,S套接字文件,b块设备文件,c字符设备文件。
(五) 基于文件权限查找
          选项是-perm 权限
          Eg:查找/app下有执行权限的文件
 文件的查找工具find
          解释:-perm就是 基于权限的查找,/111意思是ugo任意一位有执行权限就可以。
(六) 基于组名的查找
          选项是 –group 组名
          Eg:查找/app下组名是liubei的文件
 文件的查找工具find
          解释:-group 就是基于组名的查找。
(七) 基于文件uid的查找
         选项是-uid userid
         Eg:查找/app uid为1004的文件
 文件的查找工具find
(八) 基于文件名称的查找
          选项是-name
          Eg:查找/app下 文件名为a开头的文件
 文件的查找工具find
          解释:a*的意思就是以a开头 后面跟任意内容的文件。
(九) 基于没有所属人没有所属组的查找
          假如一个文件所属人,所属组被删除了,但是想查找,就需要这个命令,-nouser  -nogroup
          Eg:查找没有所属组的文件
 文件的查找工具find
          Eg:查找没有所属人的文件
 文件的查找工具find
         解释:-nouser就是没有所属人,-nogroup就是没有所属组
下面给出一些平时的练习,以供参考。
1.查找/var目录下不属于root、lp、gdm的所有文件
解题方法:find /var -not \( -user root -o -user lp -o -user gdm \) -ls
 文件的查找工具find
解题思路:-o就是或的意思,-a就是且的意思,-not就是非的意思。在这里使用了德摩根定理,如下:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
所以查找不属于三个用户的文件就是不属于root,也不属于lp,也不属于gdm,所以用-not的话 ,括号里面就要用或的关系,才能保证三个条件都满足。
2.查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件
 解题方法:find / \( -nouser -o -nogroup \) -a -atime -7 –ls
 文件的查找工具find
解题思路 :使用-o就是或的关系,但是中间要用括号括起来,不然的话后面的-a连着的就只有 –nogroup了,使用\是转义的意思,在这里不能直接识别括号,所以需要转义。
3.查找/etc目录下所有用户都没有写权限的文件
 解题方法:find /etc ! -perm /222 –ls
 文件的查找工具find
解题思路:前面说过/111,这里/222意思和那个是大致一样的,意思就是任意一位有读权限就可以,前面加个!就是非的意思,这里使用德摩根定理,不会的同学可以看一下前面的。

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

(0)
llllll
上一篇 2017-08-13 13:39
下一篇 2017-08-13 15:43

相关推荐

  • shell脚本编程之变量详解

    什么是变量     变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。 使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。 变量:变量类型 作用:  &…

    Linux干货 2016-08-15
  • 程序包管理之制作yum本地源

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。 使用本地yum源有两种方式:第一直接使用光盘镜像,不过此方…

    Linux干货 2016-08-24
  • 将两个局域网用openvpn连接起来

    考虑到我们做集群的时候需要用到可能有20台机器,可能我的要求跟别人的不一样的,我需要做20台左右的集群,不仅仅是会,而且需要非常熟练的搭建,最后通过脚步一键自动化部署安装。 目前我有两台电脑,一台可以运行7台,另一台可以运行12台左右,刚好可以满足的我的要求,但是我两台电脑都是设置的nat模式的网络,为什么我非要配置nat模式呢,根据集群架构思想,为了保证架…

    Linux干货 2017-05-01
  • 计算机的组成及其功能

    计算机系统由硬件系统和软件系统两大部分组成。冯诺依曼奠定了现代计算机的基本结构。 冯诺依曼体系的计算机,必须具有如下功能: #1 把需要的程序和数据送至计算机中; #2 具有长期记忆程序、数据、中间结果及最终运算结果的能力; #3 能够完成各种算术运算、逻辑运算和数据传送等数据加工处理的能力; #4 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调…

    Linux干货 2016-08-15
  • bash脚本与程序包管理

    概述:本章主要介绍bash编程中的函数和数组以及字符串处理和程序包管理工具等,来帮助小伙伴们更进一步的了解bash编程的内容和软件的安装、更新、卸载、查询等操作。 一、函数介绍 函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程。 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序…

    Linux干货 2016-08-24
  • shell脚本编程

    shell俗称壳(用来区别于核),提供使用者使用界面(命令解析器),它接受用户命令,然后调用相应的应用程序。 同时它还是一种程序设计语言,作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设计好的一连串的命令。作为程序涉及语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。 一、shell脚本基础概念 …

    Linux干货 2016-08-16