Linux系统文件查找

发布于 2020-03-13  490 次阅读


  1. 文件查找概述

    Linux系统中的find命令在查找文件时非常有用而且方便。
    它可以根据不同的条件来进行查找文件:例如权限、拥有者、修改日期/时间、文件大小等等。
    同时find命令是Linux下必须掌握的。

    find 命令的基本语法如下

    命令

    路径

    选项

    表达式

    动作

    find

    [path...]

    [options]

    [expression]

    [action]

    查找

    地区

    犯罪嫌疑人

    性别男25-30

    枪决行动

  2. find名称查找

    //创建文件

    touch /etc/sysconfig/network-scripts/{ifcfg-eth1,IFCFG-ETH1}

     

    //查找/etc目录下包含ifcfg-eth0名称的文件

    [root@lxgyw ~]# find /etc -name "ifcfg-eth1"

     

    //-i 忽略大小写

    [root@lxgyw ~]# find /etc -iname "ifcfg-eth1"

    //查找/etc目录下包含ifcfg-eth名称所有文件

    [root@lxgyw ~]# find /etc/ -name "ifcfg-eth*"

    [root@lxgyw ~]# find /etc -iname "ifcfg-eth*"

  3. find大小查找

    //查找大于5M

    [root@lxgyw ~]# find /etc -size +5M

     

    //超找等于5M

    [root@lxgyw ~]# find /etc -size 5M

     

    //查找小于5M

    [root@lxgyw ~]# find /etc -size -5M

  4. find时间查找

    //创建测试文件

    [root@lxgyw ~]# for i in {01..28};do date -s 201802$i && touch file-$i;done

     

    //查找7天以前的文件(不会打印当天的文件)

    [root@lxgyw ~]# find ./ -iname "file-*" -mtime +7

     

    //查找最近7天的文件,不建议使用(会打印当天的文件)

    [root@lxgyw ~]# find ./ -iname "file-*" -mtime -7

     

    //查找第7天文件(不会打印当天的文件)

    [root@lxgyw ~]# find ./ -iname "file-*" -mtime 7

     

    //本地文件保留最近7天的备份文件, 备份服务器保留3个月的备份文件

    find /backup/ -iname "*.bak" -mtime +7 -delete

    find /backup/ -iname "*.bak" -mtime +90 -delete

  5. find用户查找

    //查找属主是jack

    [root@lxgyw ~]# find /home -user jack

    //查找属组是admin

    [root@lxgyw ~]# find /home -group admin

    //查找属主是jack, 属组是admin

    [root@lxgyw ~]# find /home -user jack -group admin

    //查找属主是jack, 并且属组是admin

    [root@lxgyw ~]# find /home -user jack -a -group admin

    //查找属主是jack, 或者属组是admin

    [root@lxgyw ~]# find /home -user jack -o -group admin

    //查找没有属主

    [root@lxgyw ~]# find /home -nouser

    //查找没有属组

    [root@lxgyw ~]# find /home -nogroup

    //查找没有属主或属组

    [root@lxgyw ~]# find /home -nouser -o -nogroup

  6. find类型查找

    //f 文件

    [root@lxgyw ~]# find /dev -type
    f

    //d 目录

    [root@lxgyw ~]# find /dev -type
    d

    //l 链接

    [root@lxgyw ~]# find /dev -type
    l

    //b 块设备

    [root@lxgyw ~]# find /dev -type
    b

    //c 字符设备

    [root@lxgyw ~]# find /dev -type
    c

    //s 套接字

    [root@lxgyw ~]# find /dev -type
    s

    //p 管道文件

    [root@lxgyw ~]# find /dev -type
    p

  7. find权限查找

    //精切匹配644权限

    [root@lxgyw ~]# find . -perm 644 -ls

     

    //拥有者至少有011(-wx),010(-w-),其他人100(r--)

    [root@lxgyw ~]# find /home -perm -324

    //查找全局可写(没位权限必须高于2 -w-)

    [root@lxgyw ~]# find . -perm -222 -ls

     

    //拥有者至少有r权限, 或者拥有组至少有r权限, 或者匿名至少有w权限

    [root@lxgyw ~]# find /home -perm /442

     

    //包含set uid

    [root@lxgyw ~]# find /usr/sbin -perm -4000 -ls

    //包含set gid

    [root@lxgyw ~]# find /usr/sbin -perm -2000 -ls

    //包含sticky

    [root@lxgyw ~]# find /usr/sbin -perm -1000 -ls

  8. find处理动作

    当查找到一个文件后, 需要对文件进行如何处理, 默认动作 -print

    -print
    //
    打印

    -ls //以长格式打印显示

    -delete //删除查找到的文件(仅能删除空目录)

    -exec //后面跟自定义的 shell 命令(标准写法 -exec \;)

    -ok //后面跟自定义的 shell 命令(会提示是否操作)

     

     

    //打印查询到的文件

    [root@lxgyw ~]# find /etc -name "ifcfg*"

    [root@lxgyw ~]# find /etc -name "ifcfg*" -print

    [root@lxgyw ~]# find /etc -name "ifcfg*" -ls

     

    //拷贝文件

    [root@lxgyw ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \;

     

    //-ok会不断提示

    [root@lxgyw ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp \;

     

    //删除文件

    [root@lxgyw ~]# find /etc -name "ifcfg*" -exec rm -f {} \;

    [root@lxgyw ~]# find /etc -name "ifcfg*" -delete

    find结合xargs

    //xargs将查找到结果一个一个的处理

    [root@lxgyw ~]# touch file.txt

    [root@lxgyw ~]# find . -name "file.txt" |xargs rm -f

    [root@lxgyw ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /var/tmp

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

        


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。