文件查找命令Find

文件查找命令find

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

blob.png


工作特点:

l  查找速度慢

l  精度查找

l  实时查找

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

 

语法:

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:

l  f 普通文件

l  d 目录文件

l  l 符号链接文件

l  s 套接字文件

l  b 块设备文件

l  c 字符设备文件

l  p 管道文件

blob.png

 

查找条件

组合查找:

u  与: -a

u  或: -o

u  非: -not ,!

 blob.png

 

德.摩根定律

(非 P)或(非 Q)= 非(P且Q)

(非 P)且(非 Q)= 非(P或Q)

示例

!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

u  #num: (#-1,#]

u  -#num:[0,#-1]

u  +#num:(#,正无穷)

blob.png 

以时间为单位

-atime [+|-]#

n  #:[#,#+1)

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

n  -#:[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 文件中只要其他人有写权限,该文件就可以被匹配

 

处理动作

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

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

u  -delete 删除查找到的文件

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

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

u  -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

相关推荐

  • linux添加用户

    今天给大家说一下linux添加用户,大家可能觉得添加用户很简单,’adduser 用户名’就这个命令搞掂了。那么大家知道这个命令帮我们完成了那些事情呢,今天就给大家普及一下 添加一个linux用户需要关系到以下几个文件: 保存用户组的/etc/group文件。 保存用户ID和密码的/etc/passwd文件。 在home目录下生产一个…

    Linux干货 2017-05-28
  • linux基本命令的使用

      1>    查看当前终端名:tty 或who am i       查看当前所有登录的终端信息:who       查看当前所有登录的终端的详细信息 w 2> 编辑器    …

    2017-07-15
  • corosync + pacemaker + iscsi实现高可用mysql (下)

    上一篇讲的安装配置iscsi,本章介绍mariadb安装以及高可用的mysql具体实现 一、安装配置mariadb [root@SQL1 ~]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz  -C /usr/local \\解压软件包 [r…

    Linux干货 2015-07-09
  • N22-第一周作业

    1、描述计算机的组成及其功能    组成:        硬件:            CPU:运算器、控制器、寄存器、缓存     &nb…

    Linux干货 2016-08-15
  • Linux用户和组命令

                        groupadd命令用户和工作组管理 groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。-g:指定新建工作组的id;  -r:创建系统工作组,系统工作组的组ID小于500; -K:…

    2016-02-09
  • 常用linux命令小计(1)

    关于linux那些事儿—常用命令小结(1) 系统相关信息 Uname –m显示处理器的架构 Uname –r显示正在使用的内核版本 cat /proc/cpuinfo显示cpu的具体信息 cat /proc/version显示内核的版本 cat /proc/swaps显示哪些分区被使用 data显示系统日期 cal –y显示当年的日历 date 021920…

    Linux干货 2017-02-19