Linux下的find命令详解

一、find命令概述

Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

处理动作

-print:打印到屏幕
    -ls:查找到的文件 进行 ls
    -delete:删除查找到的文件
    -ok command {}\; 对查找的文件执行由command指定的命令,交互式
    -exec command {}\;同上,非交互式
    {}:代表前面find找到的 文件名称本身
    例如:
    find ./ -type f -exec cp {} {}.bak \; 将查找到的文件都复制出一个.bak文件

1、根据属主 属组查找

   -user username:查找属主是xx的文件
   -group group:查找属组的xx文件
   -uid useruid:查找uid号的文件
   -gid groupid:查找gid号的文件
   -nouser:查找没有属主的文件,即文件存在但是 user已被删除
   -nogroup:查找没有属组的文件

2、根据文件类型来查找

   -type f:普通文件
   -type d:目录文件
   -type l:符号链接文件
   -type s:套接字文件
   -type b:块设备文件
   -type c:字符设备文件
   -type p:管道文件

3、根据大小查找

    -size +10M :大于10m的文件
    -size +10k:大于10k的文件
    -size +1G:大于1G的文件
    -size -1G:小于文件的文件

4、根据时间查找

一天为单位
        -atime :访问时间
        -mtime :修改时间
        -ctime :改变时间
以分钟为单位:
        -amin: 访问时间
        -mmin:修改时间
        -cmin:改变时间

atime:(access time)显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用。(执行一些可执行文件或脚本)

mtime: (modify time)显示的是文件内容被修改的最后时间,比如用vi编辑时就会被改变。(也就是Block的内容)

ctime: (change time)显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变(即inode内容发生改变和Block内容发生改变时)
5、根据权限查找

 -perm +mode:
    -perm +600:属主属组其他权限 只要有一个匹配就当成功;600代表三个对象,6属主 CentOS7上 使用 /600
    -perm -600:每个对象都必须同时拥有其指定的权限,三个对象同时成立 如:-003表示其他用户必须有写与执行权限

6、find查找后的动作传递模式
默认:查找到指定类型的文件时进行一次性传递
xargs:xargs命令即让find查找的传递模式为 查找一个传递一个到动作上,删除较多碎文件很好用,
例如:find -type f | xargs command;

第一部分 - 查找名称查找文件的基本查找命令

1.使用当前目录中的名称查找文件

在当前工作目录中查找名称为test.c的所有文件。

[root@server1 mnt]# find  test.c 

2.在主目录下查找文件

查找/ home目录下的所有文件,名称为test.c。

[root@server1 mnt]# find  /home/  -name  test.c 

3.使用名称和忽略案例查找文件

找到名称为test的所有文件,并在/ home目录中同时包含大写和小写字母。

[root@server1 mnt]# find  /home   -iname   test

4.使用名称查找目录

在/目录中查找名称为test的所有目录。

[root@server1 mnt]# find  /   -type  d  -name  test

5.查找目录中的所有PHP文件

[root@server1 mnt]# find  ./   -name  *.php

6、查找并删除单个文件

[root@server1 mnt]# find  -type  f  -name  test.php    -exec rm -f {} \;

第二部分:根据他们的权限查找文件

1、查找权限为777的文件

[root@server1 mnt]# find  ./   -type  f  -perm  777    -print

第三部分:基于所有者和组的搜索文件

1、查找基于用户的单个文件
查找所有者为root的test.c文件

[root@server1 mnt]# find  -type f -user  root  -name  test.c

2、查找root组的所有文件

[root@server1 mnt]# find ./ -group  root 

第四部分:根据日期和时间查找文件和目录

1、查找50天前修改的文件

[root@server1 mnt]# find  -mtime  -50  -type f 

2、查找最近50天后访问的文件

[root@server1 mnt]# find  -atime  +50  -type f 

3、查找所有被修改超过50天小于100天的文件

[root@server1 mnt]# find  -mtime +50 -100  -type  f

4、在过去一小时内修改的文件

[root@server1 mnt]# find  -mmin -60 -type f 

5、在过去一小时内更改的文件

    [root@server1 mnt]# find  -cmin -60 -type f 

第五部分:根据大小查找文件和目录

1、找到50MB的文件

[root@server1 ~]# find  ./ -size  50M

2、找到大小在50-100之间的文件

[root@server1 ~]# find  /  -size  +50M  -size   -100M

3、找到所有100M的文件,并使用一个命令删除它们

[root@server1 ~]# find  /  -size   100M  -exec rm -f  {} \;

4、查找超过10M的mp3文件,并使用一个命令删除它们

[root@server1 ~]# find  /  -type  f  -size  +10M  -name "*.mp3"  -exec rm -f {} \;
发布了114 篇原创文章 · 获赞 30 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_41476978/article/details/88076058