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

相关推荐

  • 第五周博客作业

      感觉进入了年底,明显的时间不够,不管怎么说,还是要努力跟上学习的进度,不能给自己松懈找借口!  1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; [root@localhost ~]# grep "^[[:space:]]\+" /boot/grub/grub.co…

    Linux干货 2017-01-03
  • Linux用户和组管理(第三周)

    第三周作业 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 [root@localhost ~]# who | cut -d" " -f1 | sort | uniq 2.取出最后登录到当…

    Linux干货 2016-09-15
  • lamp部署及编译安装

    lamp 资源类型: 静态资源:原始形式与响应给客户端的结果一致; 动态资源:原始形式通常为程序文件(为某种编程语言开发),需要运行后将生成的结果展示给客户端;如果请求的资源不存在那么结果就会重定向至指定的文件中 客户端技术:javascript 服务端技术:php, jsp, … CGI:Common Gateway Interfa…

    Linux干货 2016-10-19
  • 网络管理(三)之路由设置、网络组

    网络管理(三)之路由设置、网络组 一、网卡名称: 1、网络接口的识别命名udev配置文件:#vim /etc/udev/rules.d/70-persistent-net.rules 2、网卡查看:#dmesg | grep -i eth 或者#ethtool -i eth0            …

    Linux干货 2016-09-08
  • Buffer和Cache的区别

    1、buffer(缓冲) 是为了提高内存和硬盘(或其他I/O设备)之间的数据交换的速度而设计的。 2、cache(缓存) 从CPU角度考虑,是为了提高cpu和内存之间的数据交换速度而设计的,例如平常见到的一级缓存、二级缓存、三级缓存。 cpu在执行程序所用的指令和读数据都是针对内存的,也就是从内存中取得的。由于内存读写速度慢,为了提高cpu和内存之间数据交换…

    Linux干货 2018-01-02
  • IO重定向

    I/O(IN Out)重定向(本来位置被改到别处位置):            指的改变默认输入输出的位置    程序:数据+指令  IO          可用于输入的设备:文件     &nbsp…

    Linux干货 2017-04-03

评论列表(1条)

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

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