find命令用法及示例

文件查找

locate,find可是实现在文件系统上查找符合条件的文件

实现工具:locate,find

locate有几下几个特性

1、依赖于事先构建好的索引库;

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

3、手动更新数据库(updatedb) 
/var/lib/mlocate/mlocate.db

工作特性: 查找速度快; 模糊查找; 非实时查找

locate命令用法

locate - find files by name

locate [OPTION]... PATTERN...

-b:只匹配路径中的基名;

-c:统计出共有多少个符合条件的文件

-i执行区分大小写的搜索

-r:BRE

find命令:

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

查找速度略慢、精确查找、实时查找

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

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

查找条件:指定的查找标准,根据文件名,大小,类型,从属关系,权限等等标准进行, 默认为找出指定路径下的所有文件

处理动作:对符合查找条件的文件做出的操作,例如删除等操作,默认为输出至标准输出

查找条件: 表达式:选项和测试

测试:结果通常为布尔型(true ,false)

根据文件名查找:
-name "pattern"
-iname "pattern"
支持glob风格的通配符
*  ?   []   [^]
-regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非其名

根据文件从属关系查找
-user UESRNAME
-group GRPANME:查找属组指定组
-uid:查找属主指定的UID的所有文件
-gid:查找属组指定的GID的所有文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
-inum n 按inode号查找
-somefile name 相同inode号的文件
-links n 链接数为n的文件

根据文件的类型查找
-type TYPEP:
f:普通文件
d:目录文件
l:符号链接文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件

组合测试:
与:-a,默认组合逻辑
或:-o
非:-not   !  


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


根据文件大小查找:
    -size [+][-]#UNIT
    #UNIT:(#-1,#]
    -#UNIT:[0,#-1]
    +#UNIT:(#,oo)
根据时间戳查找:
以"天"为单位
    -atime [+|-]#
     #:[#,#-1)
    -#:(#,0]
      +#:(oo,#-1]
    -mtime
    -ctime
以"分钟"为单位
    -amin
    -mmin
    -cmin

根据权限查找:
-perm [/ | -]mode
mode:精确权限匹配
/mode:任何一类用户的权限中的任何一位符合条件即满足:
Any  of  the  permission  bits  mode are set for the file
9位权限之间存在"或"关系:
[root@centos7 sixijie]$ find /tmp/sixijie -perm /001 -ls
[root@centos7 sixijie]$ find /tmp/sixijie -perm /002 -ls

-mode:每一类用户的权限中的每一位同时符合条件即满足;
All of the permission bits mode are set for the file
所有用户都有写权限  <-->  至少有一类用户没有写权限


处理动作:
    -print:输出至标准输出:默认的动作
    -ls:类似于对查找到的文件执行 "ls -l" 命令,输出文件的详细信息:
    -delete:删除查找到的文件
    -fls   /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息,保存至指定文件中;
    -ok COMMAND {} \;:对查找到的每个文件执行由COMMAND表示的命令:
每次操作都由用户确认
       -ok  chown  root root {} \;     {} 占位符,表示找到的文件

-exec COMMADN {} \;:对查找f到的每个文件执行由COMMAND表示的命令:
-exec mv {} {}.danger \;          {} 占位符,表示找到的文件
每次操作都不需要用户确认

注意:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,

并一次性传递给后面的命令;但是有些命令不能接受过长的参数,此时命令执行会失败;

另一个方式可规避此问题:find | xargs COMMAND

几个简单的练习加深下大家的印象

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

[root@sixijie sh]# find /var/ -user root -group mail

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

[root@sixijie sh]# find /var/ ! \( -user root -o -user lp -o -user gdm \)

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

[root@sixijie sh]# find /var/ -mtime -7 ! \( -user root -o -user postfix \) | wc -l

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

find / \( -nouser -o -nogroup \)  -a -atime -7

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

[root@sixijie sh]# find /etc/ -size +1M -type f

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

[root@sixijie sh]# find /etc/ ! -perm /222

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

find /etc/ ! -perm -111 -ls

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

find /etc/init.d/ -perm -113 -ls

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

(0)
sixijiesixijie
上一篇 2016-08-18 10:10
下一篇 2016-08-18 10:10

相关推荐

  • Linux运维不想早死的方法 一

    Linux运维不想早死的方法 一 为了提高工作效率,减少工作时间,爱惜生命,远离辐射;务必做好以下几点: 1,一定用快捷键         这里简单的说下几个常用的快捷按键。 Ctrl + l     清屏,相当于clear命令。 Ctrl…

    Linux干货 2017-03-26
  • 第十七周作业

    1、结合图形描述LVS的工作原理; 工作方式: LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。LVS的这种结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。当用户的请求发往虚拟服务器,LB根…

    2017-05-27
  • 操作系统—Systemd

    Systemd 概述:       CentOS 6和之前版本采用SysVinit的系统启动进程管理体系,一般用户都可通过在/etc/inittab文件的配置,来个性化自己的系统启动序列。但也经常会由于特殊环境的硬件等关系问题,造成其串行的启动进程控制流,因为可能任务的阻塞而影响启动过程。     &nbsp…

    Linux干货 2016-09-24
  • lamp+nfs搭建wordpress

    一、前言 lamp是大多上公司常用的架构,本文将针对分离式的lamp+nfs来搭建一个简单的wordpress网站。 二、架构图 三、基本实现过程 3.1:dns搭建 由于这这是一个实验,故使用yum搭建dns服务器 yum install -y bind 配置如下 dns主配置文件 dns辅助配置文件 zone文件 对所有服务…

    Linux干货 2015-10-16
  • linux发行版介绍及其哲学思想

    Linux是一种自由和开源的unix-like操作系统。目前运用领域最广泛、使用人数最多的操作系统。该操作系统的内核是Linus Torvalds在1991年10月5日首次发布。是一个多任务,多用户的操作系统,广泛应用在服务器,手机,平板电脑,电视,电子游戏等领域,我们生活中随处都可以见到linux身影。 Linux诞生 1991 年,在芬兰,赫尔辛基大学的…

    2017-09-16
  • Linux小工具之cheat

    随着linux学习的深入,接触到的命令越来越多,此时,考验脑力的时候就到了,除非你是”脑王”,否则面对多如牛毛的linux命令,真的会崩溃!linux前辈们貌似也被同样的问题所困扰,所以,他们发明了cheat。cheat是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但…

    2017-08-10

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 14:00

    find命令在笔试中几乎是必考的内容,只有多加练习,才能熟练掌握。