文件搜索者-find命令详解

1. 文件查找:

         在linux系统中由于文件的众多,往往需要在众多的文件当中查找某一个文件,如果时间一长,很难记得文件存放至何处,不过,这一点,你不比担心,因为开发人员为我们提供了强大的文件搜索工具,下面将介绍两款常用的文件查找工具locate,和find,这两款查找工具只能是从文件系统中查找不能在内存当中查找,因为内存是没有文件系统的。

2. locate命令:

  locate命令是基于数据库来查找文件的,命令查找速度快,一般查找跟新比较慢慢,对于名字变化少的,如:配置文件,可以用locate查找,因为数据库需要更新,所以就会有一点延迟,locate命令一般是每天更新一次数据库,所以有可能最新创建的文件找不到,或者刚刚删除的文件任在数据库当中。可以使用updatedb更新数据库信息,数据库文件:/var/lib/mlocate/mlocate.db

    locate 用法:

locate 选项 参数

选项:

-e 排除在寻找范围之外。

-q 安静模式,不显示任何错误信息

-n 最多显示#个输出

-r 支持正则表达式

-i 忽略大小写

-b 基名

示例:

[root@cnode6_8 etc]# locate -r '\<functions$' -n 3 //使用正则表达式匹配搜索结果的前三行
/etc/rc.d/init.d/functions
/etc/sysconfig/network-scripts/network-functions
/lib/lsb/init-functions

3. find命令

  用来在指定目录下查找文件。功能十分强大,可以根据各种条件进行查找,如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法:

  find 选项 查找路径 查找条件 处理动作

选项:

根据文件名和iNode查找:

-name 支持使用通配符* ? [] [^] 根据文件名查找

-iname 不区分大小写的根据文件名查找

-inum # 根据#指定的iNode号查找

-samefile 相同iNode号相同的文件,也就是硬链接

-link # 链接数为#的文件

-regex 使用正则表达式匹配文件

根据文件属组和属主查找:

-user 根据属组为指定用户UID查找文件

-grop 查找属组问指定组的文件

-gid根据gid号码查找文件

-nouser查找没有属主的文件

-nogrop查找没有属组的文件

根据文件类型:

-type

f 普通文件

d 目录文件

l 符号链接文件

s 套接字文件

b 块设备文件

c 字符设备文件

p 管道文件

组合条件:

-a 与

-o 或

-not !非

根据文件大小查找:可以查找指定范围大小(带单位k,M,G)的文件

-size [+|-]#unit

# unit (#-1,#] 区间前开后闭

-#unit [0.#-1]

+#unit (#,)

根据时间戳查找:可以以天或分钟为单位

[+|-]#参数意义:#:[#,#+1],+#:[#+1,], -# [0,#)

-atime 访问时间

-mtime 修改时间

-ctime 改变时间

以分钟为单位的三种时间

-amin

-mmin

-cmin

根据权限查找:-perm [/-] mode

mode 精确权限匹配

/mode 每一位只要有一类匹配的就行

-mode 每一类必须同时拥有mode指定的权限

0 表示不关注,权限随意


查找完成的处理动作:

-ls 类似于ls –l 命令可以显示文件详细列表

-delete 删除查找到的文件

-fls 查找到的文件都以长格式形式保存在文件当中

-ok command {} \;对查找到的文件执行command之前都会交互式的询问用户

-exec command {} \;类似于上一个命令,不需要交互,直接默认执行

排除查找的目录:

-prune(修减)不包含的文件或目录

补充:

  关于时间大小方面参数数字的意义和示例:如查找文件大小为12k,表示查找的文件是大于等于11k,小于12k,是指定的值减1得到的,+6k表示查找文件7k(大于6k)到正无穷

-6k表示0到5k(包含5k,小于6k)的文件

4. 查找示例:

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

[root@centos7 ~]# find /var/ -user root -group mail -ls
201334650    0 drwxrwxr-x   2 root     mail  50 Aug 13 12:54 /var/spool/mail
205749525    0 -rw-------   1 root     mail  0 Aug 13 12:54 /var/spool/mail/root

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

[root@centos7 ~]# find /var/    -not \( -user root -o -user lp -o -user gdm \)

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

[root@centos7 ~]# find /var/ -mtime -7 -not \(  -user root -o -user postfix  \)  //注意括号两侧空格

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

[root@centos7 ~]# find / -nouser -nogroup -atime -7

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

[root@centos7 ~]# find /etc/ -size +1M -type -f
find: Arguments to -type should contain only one letter
[root@centos7 ~]# find /etc/ -size +1M -type f
/etc/selinux/targeted/policy/policy.29
/etc/udev/hwdb.bin
/etc/brltty/zh-tw.ctb

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

[root@centos7 ~]# find /etc/ -not -perm /222 –ls

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

[root@centos7 ~]# find /etc/ -perm -111 -ls

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

 [root@centos7 ~]# find /etc/init.d/ -perm -113
/etc/init.d/test

附:德·摩根定律

(P Q) = (P) (Q)

(P Q) = (P) (Q令

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

(0)
jack_cuijack_cui
上一篇 2016-08-15 16:39
下一篇 2016-08-15 16:55

相关推荐

  • selinux与systemd

    selinux :service enhanced linux 安全增强的Linux  软件的安全性 选择安全系数较高的系统提高现有系统的安全性  计算机的安全等级D  最低的安全级别,提供最少的安全防护,系统访问无限制。DOS   C  访问控制的权限,能够实现可控的安全防护,个人账户管理,审计和…

    Linux干货 2017-05-22
  • rsync+inotify实现数据的实时同步更新

      rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样就可以解决同步数据的实时性问题。 一、rsync的优点与不足 rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的…

    2018-01-06
  • 马哥教育网络班19期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。     网桥用来连接两个不同的网络间的设备;集线器的作用是把接受的信号放大,从另一个端口再穿法出去,说白了就是延长网络的传输距离;   二层交换机工作在数据链路层,根据源和目的MAC地址进行数据转发;三层交换机就是具有部分路由器功能的交换机,三层交换…

    Linux干货 2016-07-07
  • vim编辑器

    vim编辑器: 文本编辑器:文本,纯文本,ASCII text;Unicode; 文本编辑种类:                 行编辑器:sed                全屏编辑器:…

    2017-04-17
  • 实战自制Linux操作系统

    实战自制Linux操作系统 自制linux系统 步骤概述: 1、新建一个硬盘2、在该新硬盘上新建两个分区,一个当boot分区,一个当/分区3、格式化并且挂载两个分区4、安装grub至目标磁盘5、为grub提供配置文件6、复制内核文件和initrd文件7、创建目标主机根文件系统8、移植bash命令和其库文件到根文件系统9、装载模块,实现网络功能10、启动测试 …

    Linux干货 2016-09-19
  • 马哥教育千万级PV实战大揭秘

    又到了激动人心的架构实战项目实践时间,马哥教育面授班的学员都很期待这一刻的到来,因为经过此次洗礼,能让自己成长更多! 上周二,马哥教育张Sir带领18期面授班的学员们做千万PV级别的电商架构实战项目!新增的多台R710企业级服务器设备,轻松搭建大数据、云计算等高端实验环境,让实战,更加真实!相信经过这场实战的洗礼,小伙伴们架构技能会有更大提升! 【张Sir生…

    2016-06-30

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-19 10:49

    find命令是我们实现文件查找的重要工具,同时,他的处理动作也是很重要的,这也是需要多加练习的呢。