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
下一篇 2016-08-18

相关推荐

  • 安装CentOS 7.2操作系统

        工具:     VMware Workstation     http://www.vmware.com/cn/products/workstation/workstation-evaluation.html  &nbsp…

    Linux干货 2016-08-04
  • 学习宣言

    纸上得来终觉浅,绝知此事要躬行博学之,审问之,慎思之

    Linux干货 2016-10-24
  • 马哥Linux第二周学习笔记

    文件管理,用户管理,权限管理

    Linux干货 2017-12-23
  • GRUB启动故障排除和内核编译

    如何进入光盘应急系统(以下修复操作仅适用于GRUB legacy, 不适用于GRUB2): 步骤一:给主机挂上安装光盘, 或者有相应启动镜像的硬盘分区(可移动的分区) 步骤二:开机时选择CDROM先启动 步骤三:进入光盘启动界面选择应急救援模式 步骤四: 不选择设置网络接口, 直接读取磁盘分区并以读写方式挂载 步骤五: 选择shell进入bash中对磁盘进行…

    Linux干货 2016-09-12
  • Linux初认识

    1、计算机的五大部件 CUP: CUP中包含了两大部件分别是运算器、控制器。其中运算器主要是进行数学运算、逻辑运算等各种运算的。除了两大部件以外CUP内部还有寄存器、缓存,它们是提升CUP性能的辅助性工具。 存储器: 内存RAM(Random Access Memory)。 输入设备Input: 输入设备用来下指令,提供数据等。输入设备有键盘,鼠标,麦克风等…

    Linux干货 2017-07-09
  • 第七周学习总结–系统启动流程

    写在前面 作为一个理工科的你,我相信你一定给自己或者给别人装过windows操作系统,作为windows操作系统都图形化了,因此我们可能很难去了解中间都发生了什么。比如使用U盘安装的时候,网上一大堆某某某U盘制作系统工具,按照网上的教程,制作完成以后,就可以在要装系统的电脑上点击电源键狂按F12(不同的电脑可能不同)进入BIOS设置了,然后就等着使用了。作为…

    2018-01-14

评论列表(1条)

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

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