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

相关推荐

  • Linux磁盘、文件系统管理

    对Linux而言,其哲学思想之一就是一切皆文件,因此Linux之上所有设备的操作都是通过文件接口来实现的,也就是说在访问设备的时候就如同访问一个文件一样,因为他们使用的都是文件系统接口。  设备也分种类,如:     1、块设备:block 其存取单位是“块”,如硬盘    &n…

    Linux干货 2016-08-29
  • Iptables入门到进阶

    Iptables入门到进阶 一、前言 Firewall(防火墙): 隔离工具;Packets Filter Firewall(包过滤防火墙);工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件; 防火墙类型 从防火墙的实现形式来分的话,防火墙可以分为软件防火墙和硬件防火墙 硬…

    Linux干货 2017-02-11
  • N26-博客作业-week6

    vim:Vi IMprove 基本模式:编辑模式,命令模式输入模式末行模式 打开文件: vim [option] [file…] +#:打开文件后,直接让光标处于第#行的行首+/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首 模式转换:编辑模式:默认模式编辑模式 –> 输入模式:i:insert…

    Linux干货 2017-03-12
  • Python基础语法习题

    1、~12为什么是-13?解1:12 二进制:0000 1100补码: 0000 1100按位取反 :1111 0011求这个原码,即负数求补码的逆过程:先减1,再取反 (符号位不变)-1 1111 0010取反 1111 1101 还原成十进制-13 2、10^9等于?10^-9等于?解:(1)10^910的二进制:0000 10109的二进制: 0000…

    Linux干货 2018-03-24
  • rpm程序包管理器使用详解

    rpm程序包管理器的使用详解   说到程序包管理器,就会想到基于CentOS系统上的rpm命令与其对应的前端处理器yum。所谓程序包,是将源代码转换为二进制格式,再组织成一个或者多个包文件供用户安装使用。rpm程序包的命名格式如下:   name-VERSION-release.arch.rpm   软件名-版本号(分为主版本m…

    Linux干货 2016-08-21
  • 文件查询、yum安装等零散知识点总结

    归纳重要知识点:文件查询、Linux配置文件、文件的压缩与归档、yum安装包文件   这篇博客介绍以前遗落的重要知识点进行归纳总结,分为四大块:文件查询命令、全局与个人配置文件、文件的压缩与归档、yum命令安装程序包的相关条件与操作。下面结合个人理解与学习内容一一进行总结。     一.文件查询命令locate与find &nb…

    Linux干货 2016-08-26