find命令详解

find命令详解

基本介绍

find命令用来从目录系统中查找文本
不同于locate,find不从数据库中查找文件,所以find速度略逊于locate,但find是实时且准确的,而且不需要占用系统资源进行遍历文件。 其标准格式如下

find [-H] [-L] [-P] [-D debugopts] [-O level] [path...] [expression]

[OPTION] 选项

  • -P 为默认选项 不跟随显示符号链接文件,只显示符号链接文件本身
  • -H -L -D 并不常用,此处暂且不表。
  • -Olevel 可以进行优化配置,默认为1。(大写o直接跟数字不带空格) 总共有-O0 -O1 -O2 -O3 四阶。其中-O0等同于-O1,-O1为默认选项 -O2和-O3用不到

[PATH. . .] 路径

该文件路径为文件查找的起始路径,即在哪个文件下查找所需要的文件

[EXPRESSION] 表达式

find命令通过与表达式相匹配来锁定要搜索的文件。常用表达式如下:

-name 按【文件名称】查找文件,支持通配符,匹配文件的basename  -iname 同-name 忽略大小写  -inum 按【inod号】查找文件  -samefile name 查找硬链接文件  -links n 查找链接数为n的文件  -regex “PATTERN” 使用正则表达式查询文,此处正则表达式有异于grep的正则表达式,而且匹配的字符不是basename,而是/dirname/basename

根据文件属主属组查找

-user USERNAME 按【属主】查找文件  -group GROUPNAME 按【属组】查找文件  -uid UID 按【UID】查找文件  -gid GID 按【GID】查找文件  -nouser 查找无属主的文件或目录  -nogroup 查找无属组的文件或目录

根据文件类型查找

-type TYPE 查找特定文件类型的文件

其中文件类型包括

f 普通文件  

d 目录文件  

l 符号链接文件  

s 套接字文件 b 块设备文件  

c 字符设备文件 p 管道文件

根据文件大小查找

-size [+|-]#UNIT #代表数字;UNIT为常用文件大小单位:kMG
#   代表范围  (#-1,#]  +#  代表范围  (0,#-1]  -#  代表范围  (#,+∞)

根据时间戳查找
以“天”为单位

-atime[+|-]#   -mtime[+|-]#   -ctime[+|-]#

以“分钟”为单位

-amin[+|-]#   -mmin[+|-]#   -cmin[+|-]#

这里的[+|-]#用法与文件大小的用法相同

#   代表范围  (#-1,#]  +#  代表范围  (0,#-1]  -#  代表范围  (#,+∞)

根据文件权限查找

-perm /MODE  -perm -MODE  -perm MODE

MODE为数字格式表现的属主属组其他用户的权限,例如:

775 代表 rwxrwxr-x 664 代表 rw-rw-r--
-perm /MODE 属主、属组、其他三者,满足rwx其中任意一项即可匹配  -perm -MODE 属主、属组、其他三者都满足rwx即可匹配  -perm MODE 属主、属组、其他权限与MODE完全相同

find命令的逻辑组合
find命令可以用逻辑命令匹配满足多个条件的文件

-a            “与”运算,可以省略  -o            “或”运算  -not或者!    “非运算”

查找文件后的处理动作

-print 打印到屏幕上  -ls 打印到屏幕上 类似于“ls -l”  -delete 删除制定查找的文件  -fls /PATH/TO/FILE 将查找到的内容输出至文件FILE -ok COMMAND {} ;\ 对查找到的文件进行COMMAND指令,{}为前面文件查找内容,交互式动作之前会有提示  -exec COMMAND {} ;\ 对查找到的文件进行COMMAND指令,{}为前面文件查找内容,非交互式动作之前无提示

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

(0)
上一篇 2017-04-09 14:08
下一篇 2017-04-09 15:21

相关推荐

  • 文本字符处理工具

    文件查看命令 cat,tac,rev cat [options] [file]     -E:显示行结束符     -n:显示行号                    nl file 也能实现相同的功能   …

    Linux干货 2017-02-25
  • shell脚本之函数相关

       本节主要是作业和select 与case的相关 一、作业 1、斐波那契数列又称黄金分割数列,因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-…

    Linux干货 2016-08-22
  • Keepalive+Nginx高可用配置(主从)

    Keepalived高可用集群 一、Keepalived介绍 Keepalived软件主要通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。keepalived除…

    Linux干货 2016-12-30
  • 总考十分的学习宣言

    目标:按照学习线路图完成所有视频的学习,完成每一次的博客作业及云学堂考试,成功转型互联网运维。 宣言:我一定要转型互联网运维工程师,并在这个领域不断坚持耕耘下去,成为行业的专家,拿高薪,挣so much money,可以有钱去看看世界,去台湾环岛,去日本爬天空树,去北欧看极光,去南极看企鹅,去看盐湖和大象,去非洲看动物迁徙。一生的时间是有限的,在有限的时间里…

    Linux干货 2016-10-24
  • linux基础学习-网络基础

    一、OSI七层模型 二、TCP/IP模型         三次握手原理 三、常见服务的默认端口 四、IP地址、子网划分基础知识     通信原理:一般数据的交互产生是在应用层(TCP/IP模型),应用层以下可以看成是搬运工,不同层的协议定义了不同的搬运工的工作内容,直到最后,把数…

    Linux干货 2016-09-05
  • shell编程之循环

           当需要重复运行特定的指令以满足系统管理工作需要时,条件判断语句if、case并不能很好地提供支撑,shell提供了for、while、until循环语句来满足此需求。 一、for循环语句        for循环用于重复整个对象列表,依次遍历对列…

    Linux干货 2016-08-18

评论列表(1条)

  • renjin
    renjin 2017-04-12 11:44

    写的内容虽然不多,但却很给人以精细感,主要介绍了find命令的用法,内容写的很详细,排版也很不错