文件查找

文件查找

 

 

一.文件查找locatefind

1.     locate命令

非实时查找( 数据库查找)

查询系统上预建的文件索引数据库

依赖于事先构建 的索引

索引的构建是在系统较为空闲时自动进行( 周期性
任务) 管理员手动更新数据库(updatedb)

索引构建过程需要遍历整个根文件系统,极
消耗资源

2.       locate的特点

n  查找 速度 快

n  模糊 查找

n  非实时查找

n  搜索的是文件的全路径,不仅仅是文件名

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

3.       locate的用法

-i 不区分大小写的搜索

 -n N 只列举前N 个匹配项目

 locate conf

  搜索名称或路径中带有“conf
的文件

 locate -r ‘\.conf$’

  使用Regex 来搜索以“.conf ”结尾的文件

               例如:查找以后缀为.Log的文件

                             [root@localhost ~]#  Locate  
–I   .log

                               /var/log/gdm/:0-slave.lo

/var/log/gdm/:0.log

/var/log/gdm/:0.log.1

只列出部分结果,结果太多了

查找前五行以.log结尾的文件

[root@localhost ~]# locate -i -n5 .log

/etc/csh.login

/root/.imsettings.log

/root/install.log

/root/install.log.syslog

/root/.cache/mozilla/firefox/w5xc6vnw.default/cache2/index.log

二.         Find命令

1.       find命令的特点

n  查找速度略慢

n  精确查找

n  实时查找

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

          2.   语法:

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

查找路径:指定具体目标路径;默认为当前目录

查找条件:指定的查找标准,可以文件名、大小、类型、

权限等标准进行;默认为找出指定路径下的所有文件

处理动作:对符合条件的文件做操作,默认输出至屏幕

2.       选项

-type TYPE:

f:  普通文件

d:  目录文件

l:  符号链接文件

s :套接字文件

b:  块设备文件

c:  字符设备文件

p: 管道文件

            3     -maxdepth level 最大搜

-minxdepth level  最小搜索深度

-name 基于名称的精确查找

-iname 基于名称忽略大小写的精确查找查找

-inum 基于inode查找

-samefile 基于相同inode号的查找(查找硬链接)

-links n 硬链接为n的文件 

-regex 支持正则 默认为(emacs标准)

-regextype egrep -regex 支持egrep同标准的正则 

-user 用户名  基于文件owner的查找

-group 组名 基于文件group

-uid userid 基于文件uid的查找

-gid groupid 基于文件gid的查找

-nouser 查找没有owner的文

-nogroup 查找没有group的文件

-type 基于文件类型的查找

  4 例子

  1.   找出/tmp 目录下,属主是root ,且文件名 不以f 开头的

/etc/lsb-release.d/base-4.0-amd64

1836489    0 -rw-r–r–   1 root    
root            0 Feb 22  2013 /etc/lsb-release.d/printing-4.0-amd64

1836491    0 -rw-r–r–   1 root    
root            0 Feb 22  2013 /etc/lsb-release.d/graphics-4.0-amd64

1836490    0
-rw-r–r–   1 root     root            0 Feb 22  2013 /etc/lsb-release.d/printing-4.0-noarch

1835855    4 -rw-r–r–   1 root    
root          212 Mar 23 02:12
/etc/statetab

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

find /etc \(–path
‘/etc/sane.d’ –o –path ’/etc/fonts’ \)

/etc/lsb-release.d/base-4.0-noarch

/etc/lsb-release.d/core-4.0-noarch

/etc/lsb-release.d/graphics-4.0-noarch

/etc/lsb-release.d/core-4.0-amd64

/etc/lsb-release.d/base-4.0-amd64

/etc/lsb-release.d/printing-4.0-amd64

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

[root@localhost
~]# find /var -user root -group mail

/var/spool/mail

/var/spool/mail/hyma

4.查找/var目录下不属于rootlpgdm的所有文件

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

/var/lib/pulse

/var/lib/dav

/var/lib/nfs/statd

/var/lib/nfs/statd/sm

/var/lib/nfs/statd/sm.bak

/var/lib/nfs/state

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

[root@localhost
~]# find /var -mtime -7 -a -not -user root -not -user postfix -ls

1180965    4 dr-x–x–x   2 lp      
sys          4096 Aug 11 07:50 /var/run/cups/certs

1181672    4 -rw-r–r–   1 rpcuser 
rpcuser         5 Aug 11 07:50
/var/run/rpc.statd.pid

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

[root@localhost
~]# find /etc -size +1M -a -type f

/etc/selinux/targeted/modules/active/policy.kern

/etc/selinux/targeted/policy/policy.24

/etc/gconf/gconf.xml.defaults/%gconf-tree.xml

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

[root@localhost
~]# find /etc -not -perm  /222 -ls|head
-20|tail -10

1837075    4 -r–r–r–   1 root    
root          338 Feb 22  2016 /etc/lvm/profile/cache-smq.profile

1837259    4 -r–r—–   1 root    
root         3729 Dec  8  2015
/etc/sudoers

1835989    4 -r-xr-xr-x   1 root    
root         1362 Mar 23 07:25
/etc/rc.d/init.d/blk-availability

1837081    4 -r-xr-xr-x   1 root    
root         3045 Mar 23 07:25
/etc/rc.d/init.d/lvm2-monitor

1837080    4 -r-xr-xr-x   1 root    
root         2137 Mar 23 07:25

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

[root@localhost
~]# find /etc -not -perm  111 -ls |head
-10

1835009   12 drwxr-xr-x 119 root     root 
      12288 Aug 11 15:41 /etc

1835687    4 -rw-r–r–   1 root    
root           20 Mar 10  2015 /etc/fprintd.conf

1835141    4 -rw-r–r–   1 root    
root          111 May 11  2016 /etc/magic

1835898    4 drwxr-xr-x   2 root    
root         4096 Mar 23 02:12
/etc/sysctl.d

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

[root@localhost
~]# find /etc -perm -113 -ls |head -10

1835370    0 lrwxrwxrwx   1 root    
root           26 Jul  4 19:19
/etc/X11/fontpath.d/xorg-x11-fonts-Type1 -> /usr/share/X11/fonts/Type1

1836589    0 lrwxrwxrwx   1 root    
root           29 Jul  4 19:23
/etc/X11/fontpath.d/cjkuni-fonts-uming -> /usr/share/fonts/cjkuni-uming

1835030    0 lrwxrwxrwx   1 root    
root           27 Jul  4 19:17 /etc/X11/fontpath.d/liberation-fonts
-> /usr/share/fonts/liberation

1837292    0 lrwxrwxrwx   1 root    
root           27 Jul  4 19:25
/etc/X11/fontpath.d/xorg-x11-fonts-100dpi:unscaled:pri=30 ->
/usr/share/X11/fonts/100dpi

1837262    0 lrwxrwxrwx   1 root    
root           25 Jul  4 19:24

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

(1)
TouchTouch
上一篇 2017-08-12 17:45
下一篇 2017-08-12 20:28

相关推荐

  • 教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性

    我们都知道,在基于红帽的Linux系统中,一个RPM包,需要把先将它依赖的其他包安装好才能正常的工作。对于终端用户,RPM的安装、更新、删除中存在的依赖关系已经被工具透明化了(如 yum或 DNF等)。但如果你是系统管理员或者RPM包的管理员,你需要谙熟RPM包的依赖关系,以便及时更新、删除适当的包来保证系统的正常运行。 在本教程中,我将教大家如何检查RPM…

    Linux干货 2015-02-10
  • SElinux

    selinux  配置文件 修改   就要重启 targeted:用来保护常见的网路服务,仅有限进程受到selinux控制,只监控容易被入侵的进程。 targeted  慢慢完善的法律 系统默认使用   targeted     CENTOS6 CENTOS7 ZAI &nbsp…

    Linux干货 2016-09-14
  • LAMP系列之(php-fpm模式)分布三台机器部署

    LAMP系列之(php-fpm模式)分布三台机器部署 现在我们需要做一个实验,就是把apache , php-fpm , mariadb ,分别安装在3台机器上,协同工作具体如下: 192.168.42.150 apache 192.168.42.151 php-fpm 192.168.42.152 mariadb 关闭防火墙 关闭selinux 分别给这3…

    Linux干货 2017-06-03
  • N25第7周作业

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; ]# fdisk /dev/sdb #划出一个…

    Linux干货 2017-02-21
  • LVS

    LVS概述 1.LVS:Linux Virtual Server全称叫做linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。四层路由器(交换),根据请求报文的目标IP和目标协议及端口将其调度转发至后端主机集群中的某台RealServer(真实服务器),根据调度算法来挑选RS; 主要有…

    Linux干货 2016-11-07
  • Linux之账号管理

    Linux之账号管理 一、新增与删除用户:useradd,相关配置文件,passwd,usermod,userdel 在Linux登录系统时会输入账号和密码,所以创建用户也需要这两个数据。新建用户用useradd命令,密码的给予则用passwd命令。 useradd 1.添加新用户 -u: -u  uid username 创建用户时指定uid(如…

    2017-07-23