locate、find命令使用总结

一、简介

   在linux系统中存在"一切皆文件"的说法,这就足以说明文件的重要性,因此查找文件也是我们必须要掌握的技能。这时候熟练使用locate、find命令也就显得至关重要。尤其是find命令常用于日常工作中如安装完某个软件之后要查看这些软件的安装配置路径,或是需要按指定条件直接查找我们需要操作的文件。因此更需要熟练掌握此命令。

二、用法详解

locate:模糊查找命令,查找的是linux系统每天特点时间自动索引备份到系统数据库中的文件。

优点:查找文件速度快

缺点:查找到的结果不是实时结果(必要时,可手动执行updatedb命令索引文件到数据库,但是相当耗时。)

格式:locate [OPTION]… PATTERN…

属于模糊非实时查询,只要查询路径包含关键字即会显示出查询结果,效果如下图:

blob.png

locate、find命令使用总结find:通过遍历指定的目标目录查找文件,可以根据文件名称、日期、大小、权限进行文件实时查找

优点:查找到的结果保证是实时结果

缺点:查找速度不如locate快

格式:

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

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]

查找路径:默认为当前路径

查找条件:默认为指定路径下的所有文件

处理动作:默认为显示到屏幕中

查找条件:

1、-name "文件名":支持使用globbing(*,?,[],[^]) 

例:按文件名查找命令为:find / -name "rpm",如下图:

locate、find命令使用总结blob.png

2、-iname 不区分文件名大小写

例:按文件名不区分大小写查找命令为:find / -iname "rpm",如下图:

locate、find命令使用总结blob.png

3、-user 根据属主查找文件

例:按属主查找文件命令为:find /tmp -user lxx,如下图:

locate、find命令使用总结blob.png

4、-group 根据属组查找文件

例:按属主查找文件命令为:find /tmp -group lxx,如下图:

locate、find命令使用总结blob.png

5、-uid 根据uid查找文件

例:按uid查找文件命令为:find /tmp -uid 502 -ls,如下图:

locate、find命令使用总结blob.png

6、-gid 根据gid查找文件

例:按gid查找文件命令为:find /tmp -gid 502 -ls,如下图:

locate、find命令使用总结blob.png

7、查找没有属主的文件

例:查找没有属主的文件命令为:find /tmp -nouser -ls,如下图:

locate、find命令使用总结blob.png

8、查找没有属组的文件

例:查找没有属组的文件命令为:find /tmp -nogroup -ls,如下图:

locate、find命令使用总结blob.png

9、组合查找条件

与(所有条件必须同时满足,-a默认可省):-a 查找条件1 -a 查找条件2 -a …

或(满足其中一个条件即可):-o 查找条件1 -o 查找条件2 -o …

非(不满足指定条件的才可以): -not,! 

    -not 查找条件

注:-a优先级高于-o优先级

例:查找条件,包含centos文件并且没有属组的文件,命令为:

find /tmp/ -name "*centos*" -a -nogroup -ls 等价于 

find /tmp/ -name "*centos*" -nogroup -ls

如下图:

locate、find命令使用总结blob.png

例:查找条件,包含centos文件并且没有属组的文件,命令为:

find /tmp/ -name "*centos*" -o -nogroup  (注意此处不能加-ls命令,会有问题),如下图:

locate、find命令使用总结blob.png

例:查找条件,查找属主不是root用的文件,命令为

find /tmp/ -not -user root -ls 或 find /tmp/ ! -user root -ls如下图:

locate、find命令使用总结blob.png

find复杂逻辑处理公式:

非A 且 非B = 非(A或B)

非A 或 非B = 非(A且B)

例:find /tmp/ -not -name "*.txt" -a -not -name "*.out" 等价于 find /tmp/ -not \( -name "*.txt" -o -name "*.out" \)   

注:小括号因为比较特殊,所以此处需转义

10、根据文件类型查找

命令格式:-type TYPE:根据文件类型查找

参数说明:

    -f:普通文件

    -d: 目录文件

    -l: 符号链接文件

    -b: 块设备文件

    -c: 字符设备文件

    -p: 命令名管道文件

    -s: 套接字文件

示例如下图:

locate、find命令使用总结blob.png

11、根据文件大小查找

命令格式:-size[+|-]#UNIT:

常用单位:k,M,G

#UNIT: #-1 < x <= #   如1.1k,1.9k,2k等都算作2k文件

如下图:

locate、find命令使用总结blob.pngblob.png

locate、find命令使用总结

-#UNIT:x <= #-1 如-2k:1k,0.9k等都符合条件,但是1.1k-1.9k就不符合条件

如下图:

locate、find命令使用总结blob.png

+#UNIT:x > # 如+2k:2.1k,3.1k都符合条件,不包含2k本身。

如下图:

locate、find命令使用总结blob.png

12、根据时间戳查找
 a.以为单位进行查找

    访问时间:-atime:[+|-] 

     修改时间-mtime:[+|-]  

     改变时间:-ctime:[+|-]

     计算公式如下:

      #: # <= x <= #+1

     -#:x < # 

     +#:x >= #+1

例:查找3天前的文件(大于等于3并且小于4),如下图:

locate、find命令使用总结blob.png

b.以分钟为单位进行查找
   访问时间:-amin:[+|-] 

   修改时间:-mmin:[+|-]  

   改变时间:-cmin:[+|-] 

例:查找5分钟之内访问过的文件,如下图:

locate、find命令使用总结blob.png

13、根据权限查找

命令格式:-perm[+|-]MODE

          MODE:与MODE精确匹配,示例如下图:

          blob.png

locate、find命令使用总结

         +MODE:任何一类用户的权限只要能包含对其指定的任何一位权限即可,例如555(r-xr-xr-x)这种情况无论属主属主其他用户只要拥有r或x任何一种权限即可匹配,示例如下图:

locate、find命令使用总结blob.png

        

         -MODE:每一类用户的权限都包含对其指定的所有权限即可,例如222(-w- -w- -w-)这种情况无论属主属主其他用户必须都包含写权限才能匹配,示例如下图:

locate、find命令使用总结blob.png

14、处理动作

参数说明:

     -print:默认动作,打印至屏幕

     -ls:显示找到的文件的详细属性

     -exec COMMAND {} \;    注:find配合-exec时如果要删除文件,执行后不确认直接删除(所有命令都不提醒)

     -ok COMMAND {} \;     注:find配合-ok时如果要删除文件,执行后需确认后才会删除(其他命令也会提醒)

-exec示例如下图:

locate、find命令使用总结blob.png

注意:find命令会一次性找到所有符合条件的文件,并一同传递给后面的命令,但有些命令不能接受过长的参数。解决办法:

find|xargs COMMAND,如下图:

locate、find命令使用总结blob.png

补充:实现查找文件后给文件改名,如下图:

参数说明:-i 选项告诉 xargs 用每项的名称替换 {}

-t 选项指示 xargs 先打印命令,然后再执行(想详细了解xargs命令执行过程可以加此参数)

locate、find命令使用总结blob.png

原创文章,作者:镜花水月,如若转载,请注明出处:http://www.178linux.com/7842

(0)
镜花水月镜花水月
上一篇 2015-08-28
下一篇 2015-08-31

相关推荐

  • NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)

    NFS相关介绍一、NFS简介1. NFS(Network File System): NFS是一个文件共享协议, 也是是在类Unix系统中在内核中实现的文件系统。2. 起源: 最早是由SUN公司研发,非常古老,只是实现文件共享,安全控制方面比较简陋。 版本有, NFSv1, NFSv2,NFSv3,NFSv4. v4版开始支持kerber…

    Linux干货 2016-10-19
  • mysql备份还原

    一、前言 数据对于一个公司来说有多重要这点不说大家也知道,数据还在,服务崩溃还可重建。为什么要备份?很简单,天灾人祸。比如硬件故障,软件故障,自然灾害,黑客攻击或自身误操作等因素。这时候备份,恢复数据就显得至关重要了。 二、基础概念 由于备份与恢复需要用到一些必要的知识,故在此先讲解下 2.1二进制日志 myql日志有多种,其中二进制日志文件对数据恢复有很大…

    Linux干货 2015-11-30
  • Linux基础之shell脚本编程(一)

    本文主要是shell脚本编程练习 1、写一个脚本    (1)、获取并列出当前系统上的所有磁盘设备;    (2)、显示每个磁盘设备上每个分区相关的空间使用信息;   1 #!/bin/bash   2 #author:BaoZhang  &nbsp…

    Linux干货 2016-11-11
  • N22-妙手-第一周博客作业

           描述计算机的组成及其功能 1946年冯诺依曼提出冯 诺依曼结构,也称普林斯顿结构,即一种将程序指令存储器和数据存储器合并在一起的存储器结构。根据他的结构,计算机组成是: (1)运算器:负责数据的算术运算和逻辑运算 (2)控制器:  负责对程序信息和数据进行分析,控制并协调其输…

    Linux干货 2016-08-15
  • Linux进程管理三剑客htop、ps、dstat

    ps命令 Unix有两种主要分支:官方的Unix(AT&T)和非官方的Unix(加利福利亚大学伯克利分校)。UNIX("带-")和BSD(不带东西)都有自己的ps版本,并且ps版本都很出名,并被广泛使用。最终结果是许多现代版本的ps都同时支持两种类型的选项,即所谓的Unix选项和BSD选项。而且还有一组选项支持GUN的选项. 所以…

    Linux干货 2016-11-22
  • N26-第二周作业-邢岩(1)

     马哥门徒-N26-邢岩   度过了一个愉快的春节,又到了上班的时候了!我的Linux基础学习也进行到了疯狂记命令的阶段,痛并快乐着!那就让我来说一下Linux上的文件管理类命令都有哪些吧。   Linux的文件相关命令还是蛮多的,我不妨简单的总结一下,归结为6类常用的命令: 1、目录切换类命令   pwd命令:显示工…

    Linux干货 2017-02-10