Linux find 强大的文件查找工具

2016-03-31 16:10 9 1 收藏

今天图老师小编要向大家分享个Linux find 强大的文件查找工具教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - 服务器 】

Linux find 强大的文件查找工具

linux的系统中的文件实在是太多了,怎么样才能快速而且精确的在linux系统找出你想要的文件呢?Linux 的find命令提供了很强大的功能,学好find命令的使用,可以给你节省大量花费在找文件的时间

 

 一切皆文件是 Linux的哲学思想之一, 这条命令可以统计当前linux系统中有多少文件ls -R / |wc -l  &建议放在后台执行,因为你的系统文件很多则会消耗很多时间,你可以看见这个结果是庞大的,linux的系统中的文件实在是太多了,怎么样才能快 速而且精确的在linux系统找出你想要的文件呢?Linux 的find命令提供了很强大的功能,学好find命令的使用,可以给你节省大量花费在找文件的时间。

find的基本语法格式:

        find  [查找位置]  [查找标准]  [处理动作]

查找位置:默认为当前目录,可以指定多个目录,多个之间用空格

查找标准:默认为查找指定目录下的所有文件

处理动作:显示到标准输出,默认为print

剖析find的查找标准可分为哪些:

  1)文件名

 -name  "文件名称" : 根据文件名查找,支持glob
 

01.gif

-iname "文件名称",根据文件名查找,不区分大小写

02.gif

 

2)文件的属主、属组

     -user     "USERNAME"    :    根据属主查找

     -group    "GROUP"         :    根据属组查找

     -uid         "UID"               :    根据UID查找

     -gid      "GID"                  :    根据GID查找

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

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

03.gif


 

复制代码代码如下:
[root@Redhat6 /]# find / -nouser -nogroup #没有属主,也没有属组
/tmp/user1dir
[root@Redhat6 /]# ls -ld /tmp/user1dir/ #验证查找的文件是否符合要求,文件没有用户表示属主和属组,但会以ID号来表示
drwxrwxr-x 2 500 500 4096 Jul 23 10:36 /tmp/user1dir/
[root@Redhat6 /]# find / -user root -gid 500 #查找用户为root,gid为500
/tmp/user1dir
[root@Redhat6 /]# ls -ld /tmp/user1dir/
drwxrwxr-x 2 root 500 4096 Jul 23 10:36 /tmp/user1dir/


 

3)文件的类型

    -type

           f   文件

           d  目录

           b  块设备

           c   字符设备

           l    符合链接文件

           p  命令管道文件

           s  套接字文件

04.gif

4)文件的大小

           -size

#[k|M|G]:#表示数字,匹配的时候为模糊匹配

                +#[k|M|G]:+#表示大于,匹配的结果大于#

                -#[k|M|G] :-#表示小于,匹配的结果是小于#

05.gif

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/fuwuqi/)

07.gif

5)文件修改时间

           -atime   [+|-]#   :访问时间,默认为天,#表示#天的这个时间点,+#表示至少有#天没访问 ,  -#表示#天之内没访问

           -mtime [+|-]#   :  修改时间,#表示#天的这个时间点没有被修改,+#表示至少有#天没有修改 ,  -#表示#天之内没有修改

           -ctime   [+|-]#   : 改变时间,#表示#天的这个时间点没有被改变,+#表示至少有#天没有被改变 ,  -#表示#天之内没有被改变

           -amin    [+|-]#    : 时间为分钟,#表示#分钟的这个时间点没有被访问,+#表示至少有#分钟没有被访问 ,  -#表示#分钟之内没访问

           -mmin  [+|-]#    :时间为分钟,#表示#分钟的这个时间点没有被修改,+#表示至少有#分钟没有被修改 ,  -#表示#分钟之内没有被修改

           -cmin    [+|-]#    :时间为分钟,#表示#分钟的这个时间点没有被改变,+#表示至少有#分钟没有被改变 ,  -#表示#分钟之内没有被改变

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/fuwuqi/)

07.gif

08.gif

6)文件权限

          -perm  [+|-] MODE  

                 不带[+|-]表示精确权限匹配,

                 +表示任何一类用户的任何一位权限匹配

                 - 表示每类用户的每位权限都匹配

 

09.gif

10.gif

11.gif

12.gif

 

find在查找标准时支持组合查找条件,在使用组合查找条件时要考虑优先级,优先级为顺序为非→与→或,在组合参数是想改变优先级可以用()来提升优先级。

           -a    (and)   与默认是与

           -o    (or)      或

           -not,!           非

find的处理动作可以是:

       -print   默认为输出

       -ls          显示查找到的文件的详细信息

-ok   COMMAND ;   要确认

       -exec    COMMAND  ;     其中COMMAND中有对查找到的文件进行操作时,用{}来替代查找到的     文件,;表示使用-exec的结束符,是固定格式; 使用-exec来出来查找的文件时,还可以通过管道送给xargs命令来解决,xargs在执行命令时,如果有对文件进行操作则用-i选项,{}也表示要操作的文件。

 

复制代码代码如下:
1、查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
2、查找/usr目录下不属于root,bin,或student的文件;
find /usr -not ( -user root -o -user bin -o -user student )
find /usr -not -user root -a -not -user bin -a -not -user student
3、查找/etc目录下最近一周内内容修改过且不属于root及student用户的文件;
find /etc -mtime -7 -a -not -user root -a -not -user student
find /etc -mtime -7 -a -not ( -user root -o -user student )
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / ( -nouser -o -nogroup ) -a -atime -1 -exec chown root:root {} ;
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M -exec echo {} /tmp/etc.largefiles ;
find /etc -size +1M /tmp/etc.largefiles
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm +222
7、删除类型不是目录,而且没有属主的文件;
find / -not -type d -a -nouser -exec rm -f {} ;
find / -not -type d -a -nouser | xargs -i rm -f {}

本文出自 技术之路---桀 博客

来源:http://www.tulaoshi.com/n/20160331/2051956.html

延伸阅读
标签: 电脑入门
我们都知道,Linux命令加上不同的参数其效果也不同,下面图老师小编将针对Linux fing命令中的-exec 参数给大家做个详细介绍,以便你有个了解。 exec解释: -exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。 {} 花括号代表前...
标签: 电脑入门
Ctags工具主要用来遍历源码文件,快速查找定位源码中的符号,那么Linux下要如何使用Ctags来查找源码呢?下面随图老师小编一起来学习下Linux下使用Ctags查找源码的方法。 太多的文件导致我们无法去定位一个函数的实现或者一个宏定义的位置。显然对于源码的阅读和个人的学习都是非常不利的。多么希望有一个软件能够输入命令就能够精确的定位函数...
标签: 电脑入门
find命令主要用于文件的查找,在之前的文章有过详细的介绍(详见系统之家Linux find命令常见用法汇总),今天图老师小编要给大家介绍的是Linux find命令和xargs命令的配合使用,一起来了解下吧。 在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限...
标签: 电脑入门
我们都知道Linux下查找文件的命令是find命令,运用该命令可以很快的搜到自己想要的文件,那么find命令有哪些使用技巧呢?下面图老师小编就给大家介绍下Linux中find命令的巧妙运用。 find命令的工作方式是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。 1、根据文件名或正则表达式匹配搜索 选项-name的参数指定了文...
    命令行一直是Linux用户用来解决问题的首要选择。当需要做某件事时,你只要想好如何去做,从那时起你就知道该如何做了。     不过很少有人花些时间系统地了解处理工具在处理过程中的输入和输出。因此对于最基本实用工具的功能可能并不是很了解。在本文中,我们将讨论所有shell工具箱中都有的一个重要工具:f...

经验教程

496

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部