11文件查找find和locate

有些时候我们是想要在系统中查找某个具体的文件,却不知道路径在哪里,只是知道其中的某些特性,比如大小或者名字什么的。这时候就要用到查找工具啦。

在文件系统上查找符合条件的文件命令有两个,locate和find,其中locate是非实时查找即数据库查找。而find是实时查找

locate:

用法:locate [OPTION]… [PATTERN]…

【option】

-i  不区分大小写

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

-r 使用扩展正则表达式 查询 

locate foo 搜索名称或路径中带有foo的文件

locate -r '\.foo$' 使用扩展正则表达式来搜索以 ".foo" 结尾的文件

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

/var/lib/mlocate/mlocate.db 

依赖于实现构建的索引,

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

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

工作特点:

查找速度快(只查找数据库中有的数据)

模糊查找

非实时查找(在索引构建之后创建的文件时不能找到的)

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

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

find:

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path…] [expression]

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

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

查找条件:指定的查找标准,可以文件名、大小、类型、权限等。默认找出指定路径下的所有文件

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

【查找条件】

根据文件名和inode查找:

-name “文件名称”: 支持使用glob (文件名通配符) *,?,[],[^]

-iname “文件名称” : 不区分字母大小写

inum n  按inode号查找

-samefile name 相同inode号的文件

-links n 链接数为n的文件

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

根据属主属组查找:

-user username:

-group groupname:

-uid userid:

-gid groupid:

-nouser:查找没有属主的文件

-nogroup:查找没有属组的文件

根据文件类型查找:

-type type:  f,d,l,s,b,c,p 

根据组合条件查找:

-a  -o  -not=!

根据文件大小来查找:

-size [+|-]#UNIT   (k,M,G)

#UNIT (#-1,#] –> 如6k 即(5k,6k] 5k到6k 但不包括5k

-#UNIT:[0,#-1] –>如6k 即[0,5k]

+#UNIT:(#,∞)  大于# 但不包括#

根据时间戳查找:

以 【天】为单位

-atime[+|-]#  :  [0,#) [#,#+1) [#+1,∞]

-mtime[+|-]#  :

-ctime[+|-]#  :

以【分钟】为单位

-amin[+|-]#  :

-mmin[+|-]#  :

-cmin[+|-]#  :

根据权限查找:

-perm [/|-] mode

mode : 精确匹配,不能多不能少

/mode 或+mode : 或关系 ugo中 只要有一个匹配即可

-mode : ugo必须至少拥有或比mode更多权限

【处理动作】

-print:默认处理动作

-ls:类似于对查找到的文件执行 ls -l

-delete:删除查找到的文件

-fls file:查找到的所有文件的长格式信息保存至指定文件中

-ok commond {} \; 对查找到的每个文件执行有commond指定的命令,每个文件执行前都要交互式确认

-exec commond {} \; 对查找到的每个文件执行有commond指定的命令

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

例:

find -name “*.conf” -exec cp {} {}.orig \;

•备份配置文件,添加.orig这个扩展名

find /tmp -ctime +3 -user joe -ok rm {} \;

•提示删除存在时间超过3天以上的joe的临时文件

find ~ -perm -002 -exec chmod o-w {} \ ;

•在你的主目录中寻找可被其它用户写入的文件

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

•在 /data 目录中 找出所有 以.sh 结尾没有执行全选的文件 增加执行权限

find /home -type d -ls 

找出所有/home 目录下的 目录 列出详细信息

find /var -u root -g mail 

find /var not \(-user root -o -user lp -o -user gdm \)

find /var -ctime -7 -not \( -user root -o -user postfix \)

find / -nouser -nogroup -atime -7 

find /etc -size +1M -type f 

find /etc -not \( -perm +222 \)

find /etc -not \( -perm -222 \)

find /etc/init.d -perm /113 

find /etc -path '/etc/sane.d' -a -prune -o -name "*.conf" -print

find /etc -path '/etc/front*' -prune -o -path '/etc/hu*' -prune -o -path '/etc/lib*' -prune -o -path '/etc/se*' -prune -o -path '/etc/init' -prune -o -name "*.conf" -print

–joker的部落阁

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

(0)
jokerjoker
上一篇 2016-11-27
下一篇 2016-11-27

相关推荐

  • ACL权限管理练习

    ACL简介;
    权限管理练习

    2017-09-11
  • M20-1 8月5号作业

    作业:    1、取本机IP地址;    2、取各分区利用率的数值;    3、统计/etc/init.d/functions 文件中每个单词出现的次数,并按频率从高到低显示;    4、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/fu…

    Linux干货 2016-08-15
  • Linux基础

    计算机组成和功能 按照Von Neumann的理解 [1],计算机分为以下几部分:     输入 (Input Device, 用于提供给计算机待处理的数据)         e.g. 键盘,…    &nbs…

    Linux干货 2016-09-27
  • linux软链接与硬链接的区别

    硬链接:相于当给文件增加了一个新名 在添加链接时会增加链接数,其inode结点数不会增加 支持绝对路径与相对路径 硬链接不能对目录来创建 不能跨分区来创建链接 硬链接链接到文件被删除时,依旧可以通过链接文件来访问被删文件的数据 软链接:可以支持对目录来创建链接 (注,当你用rm -rf 删除目录的时候,目录不会删除,但目录中的内容会被删除,并且会删除源文件)…

    Linux干货 2016-10-02
  • 马哥教育网络班第21期+第四周课程作业

    1. 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp -r /etc/skel /home/tuser1 chmod –R 700 /home/tuser1 2. 编辑/etc/group文件,添加组hadoop。 echo &q…

    Linux干货 2016-08-01
  • Linux的终端类型

         序  终端的概念是由Ken Thompson提出的,是人机交互的接口。它是一种字符型设备,有多种类型,它大体上分为设备终端,物理终端,虚拟终端,图形终端,串行终端,伪终端。 一、   设备终端  设备终端就是显而易见的外在设备,比如键盘、鼠标和显示器等。 二、&nbsp…

    Linux干货 2016-10-19