文件查找命令Find

文件查找命令find

Find:在文件上查找符合条件的文件,是个实时的查找工具,通过遍历指定路径完成文件查找

blob.png


工作特点:

查找速度慢

精度查找

实时查找

可能只搜索用户具有读取和执行权限的目录

 

语法:

find [option]…[查找路径][查找条件][处理动作]

 

查找条件:

-name “文件名称:支持使用glob *,?,[],[^]

-iname “文件名称:忽略大小写

blob.png

-inum n:按照节点号查找

-samefile name:相同节点号的文件

-links n:链接数为n的文件

-regex ”PATTERN“:以pattern匹配整个文件路径字符串,而不仅仅是文件名称

-user 查找属主为指定的用户(uid)的文件

blob.png

-group 查找属组为指定的用户组(gid)的文件

-uid 查找属主为指定的uid号的文件

-gid 查找属组为指定gid号的文件

-nouser 查找没有属主的文件

-nogroup 查找没有属组的文件

blob.png

 

查找条件

-type TYPE

f 普通文件

d 目录文件

l 符号链接文件

s 套接字文件

b 块设备文件

c 字符设备文件

p 管道文件

blob.png

 

查找条件

组合查找:

与: -a

或: -o

非: -not ,!

 blob.png

 

.摩根定律

(非 P)或(非 Q= 非(PQ

(非 P)且(非 Q= 非(PQ

示例

!P –a !Q = !(P –o Q)

!P –o !Q = !(P –a Q)

blob.png

非P或非Q 表明这两者只要有一个为非就可以满足条件,它的所有情况是

1.非P 真Q

2 真P 非Q

3 非P 非Q

这三种情况否符合非P或非Q,那么它的反面就是

真P且真Q,那么上述三种情况就可以直接表示为

取真P且真Q的补集,也就是不是真P且真Q的情况

则可以表示为 !(真P且真Q)即非(真P且真Q)

同样,非P且非Q就可以表示为!(真P或真Q)即非(真P或真Q)


find /tmp \( -not –user root –a –not –name “f*” \) –ls

find /tmp –not \( -user root –o –name “f*” \) –ls

 

查找/etc目录下,除/etc/sane.d目录的其他所有.conf后缀的文件

find /etc/ -path “/etc/sane.d” –a –prune –o –name “*.conf” –print

   


根据文件大小查找

-size +|-#num

常用单位 K M G

#num: (#-1,#]

-#num:[0,#-1]

+#num:(#,正无穷)

blob.png 

以时间为单位

-atime [+|-]#

#:[#,#+1)

+#:[#+1,正无穷)

-#:[0,#)

 

-mtime

-ctime

 

根据权限查找

-perm [-|/]MODE

mode:精确权限匹配

/mode:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,Centos7中舍弃了+

-mode:每一类对象都必须同时拥有指定的权限,与关系

0:表示不关注

 blob.png

排除/root目录下的.mozilla目录,然后查找文件中ugo任意一位有执行权限的文件并显示出来


blob.png

排除/root目录下的.mozilla目录,然后查找文件中ugo三者都有执行权限的文件,这三者条件必须都满足的才能被匹配,否则不匹配


blob.png

只看组g有没有执行的权限,有就满足匹配,其他的u,o不考虑


find -perm 755 匹配权限为755的文件,其他文件不匹配

find -perm /222 u,g,o中任意一个有写权限该文件就能匹配

find -perm -222 只有文件中u,g,o权限位都有写权限的文件才可以被匹配

find -perm -002 文件中只要其他人有写权限,该文件就可以被匹配

 

处理动作

-print 默认处理动作,输出至屏幕

-ls 类似于对查找到的文件执行那个ls -l命令

-delete 删除查找到的文件

-fls file 查找到的文件以长格式形式保存到指定文件中

-ok command {} \; 对查找到的文件执行由command指定的命令

-exec command {} \; 对查找到的文件执行command指定的命令

{} 用于引用查找到的文件自身

有些命令不能接受过多参数,此时命令执行会失败,可以使用

find | xargs command

blob.png 

注:{}表示的是完整的文件路径,所有如果要备份到其他目录要注意路径的正确书写


find –name “.conf” –exex cp {} {}.org \;

备份含有.conf字符串的文件,备份的名称后缀加上.org扩展名

find /data –type f –perm 644 –name “*.sh” –exec chmod 755 {} \;

找出data目录下包含.sh字符串的权限是644的普通文件,并将这些文件赋予755的权限

find /home –type d –ls

找出家目录下所有的目录并显示

习题

1、写一个脚本/root/bin/createuser.sh,实现如下功能:使用一个用户名做为参数,如果指定参数的用户存在,就显示其存在,否则添加之;显示添加的用户的id号等信息

blob.png

blob.png

2、写一个脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息

blob.png

blob.png  

3、写一个脚本/root/bin/filetype.sh,判断用户输入文件路径,显示其文件类型(普通,目录,链接,其它文件类型)

blob.png

blob.png

4、写一个脚本/root/bin/checkint.sh,判断用户输入的参数是否为正整数

blob.pngblob.png

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

blob.png

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

blob.png

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

blob.png

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

blob.png

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

blob.png

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

blob.png

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

blob.png

blob.png

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

blob.png

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

(0)
Stupid_LStupid_L
上一篇 2016-08-16 13:59
下一篇 2016-08-16 13:59

相关推荐

  • 设计模式(三)建造者模式Builder(创建型)

    1. 概述        在软件开发的过程中,当遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。        例子1:买肯德基     &…

    Linux干货 2015-06-25
  • http

    http 笔记整理

    Linux干货 2018-01-31
  • 配额实现

       1  启用配额限制 vim   /etc/fstab      UUID=”5263027d-f571-4c4a-98d8-930e41e0e265″  /home  ext4  usrquota,grpquota  0…

    Linux干货 2017-04-25
  • kickstart文件及引导镜像的制作流程

    kickstart文件及引导镜像的制作流程 kickstart文件制作流程 安装制作kickstart文件的图形界面工具 [root@slave1 ~]# yum install system-config-kickstart 开启工具 [root@slave1 ~]# system-config-kickstart 在打开的图形界面中通过file菜单选项选…

    Linux干货 2017-09-04
  • OPenSSL

    OPenSSL   OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.   SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。…

    Linux干货 2016-11-07
  • 第一周学习内容

    1、LINUX的三大主流版本:debian slackware redhat 2、一个完整的操作系统是由内核+运行在内核之上的应用程序组成。      LINUX操作系统是由linux内核+GNU开源组织编写的应用程序组成(GNU/Linux) 3、CPU架构:X86(X64)、摩托罗拉的m68k、arm、IBM的POWER(性…

    Linux干货 2016-12-03