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创建CA和申请认证

    Linux创建CA和申请认证 背景: 在学习Linux运维中,学习到了CA的创建和申请认证,为了加深对CA的理解,这里做一个创建CA和申请认证的实验并记录下来供以后回顾。 介绍: 什么是CA认证? 电子商务认证授权机构(CA, Certificate Authority),也称为电子商务认证中心,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任…

    2017-09-09
  • 推荐-Linux Namespace的一点理解

        下文的原文来自: http://blog.csdn.net/preterhuman_peak/article/details/40857117    原文写的非常好,下文中大部分文字描述来自原文,我仅做了一点理解性的插图和实验部分。    &…

    Linux干货 2016-03-28
  • Iptables基础

       Firewall:防火墙,工作于主机或网络的边缘处,对于进出本主机或网络的报文根据事先定义好的检查规则左匹配检测,对于能够被规则所匹配到的报文进行相应的处理的组件。   防火墙可分为:硬件防火墙,在硬件级别实现部分功能的防火墙;软件防火墙,应用软件处理逻辑运行于通用硬件平台之上的防火墙;主机防火墙,服务范围为当前主机;网络…

    2017-06-19
  • 第十一周作业

    1、详细描述一次加密通讯的过程,结合图示最佳。   发送者:     1)使用单向加密算法提取要发送文件的特征码;     2)使用自己的私钥加密特征码并附加在数据后面;     3)生成用于对称加密的临时密码;     4)用此临时密钥加密数据和已经使用私钥加密后的特…

    2017-05-08
  • 文件系统上的权限管理

                        文件系统上的权限管理: 一 、三种权限       &nbs…

    Linux干货 2017-04-03
  • 创建CA

    创建CA和申请证书 创建私有CA: 首先在CA服务器端创建CA。 先去看openssl的配置文件: /etc/pki/tls/openssl.cnf 一般我们不会去更改这个配置文件,但是要去看一下。我们是根据这个文件创建的CA. 这个文件里是openssl的配置文件,我们打开后只观察与CA有关的文件。   在文本中可以看出一个主机中可以有多个CA,…

    2017-07-28

评论列表(1条)

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

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