• find命令-随心所欲查找服务器的文件


    一、命令详解

    【功能说明】

    find命令用于查找目录下的文件,同时也可以调用其他命令执行相应的操作。

    【语法格式】

    [root@7bfe451a2fe1 /]# find --help
    Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
    
    • 1
    • 2

    说明:

    1. 语法格式可分为这4个元素:find [选项] [路径] [操作语句]
    2. 注意find命令以及后面的选项和路径、操作语句,每个元素之间都至少要有一个空格
    3. 注意各元素的先后顺序

    二、使用范例

    find查找条件

    1. 文件名
    2. 文件的类型
    3. 文件的权限
    4. 所属的用户和组
    5. 文件的时间
    6. 文件的大小

    2.1 根据文件名查找

    在/home目录下递归查找py结尾的文件

    find /home -type f -name "*.py"
    
    # -name参数只支持* ? []这三个通配符
    
    • 1
    • 2
    • 3

    在当前目录及子目录下查找1.pcap的文件

    find . -name 1.pcap
    
    • 1

    在/usr目录下递归查找名为which的文件

    find /usr -name which
    
    • 1

    2.2 根据文件的时间查找

    查找2天内受到访问的文件

    find . -atime -2
    
    # -atime 按照文件的访问时间来查找文件,单位为天
    # -2 表示时间距现在2天内
    # +2 表示时间距现在2天前
    # 2 表示距现在第2天
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查找最近5分钟内被修改过的文件

    find / -mmin -5
    
    # -mmin 按照文件的修改时间来查找文件,单位为分钟
    
    • 1
    • 2
    • 3

    查找更改时间比file1.txt新的文件

    find . -newer file1.txt
    
    • 1

    查找更改时间比file1.txt新但比file2.txt旧的文件

    find . -newer file1.txt ! -newer file2.txt
    
    • 1

    在目录中查找更改时间在3天前的文件,并删除它们

    find . -type f -mtime +3 -exec rm {} \;
    
    • 1

    在 /var/log目录中查找所有文件名以.log结尾,更新时间在3天以前的文件,并且删除它们

    2.3 根据文件的类型查找

    在当前目录下查找一个名为douyin的目录

    find . -type d -iname douyin
    
    # d表示目录
    # f表示文件
    
    • 1
    • 2
    • 3
    • 4

    2.4 根据文件的权限查找

    查找权限为644的文件

    find /etc/ -type f -perm 0644 -print
    
    • 1

    2.5 根据文件的大小查找

    从根目录查找大小为20M-30M的文件

    find / -size +20M -size -30M
    
    • 1

    2.6 根据用户和组查找

    查找用户为nobody的所有文件

    find / -user nobody
    
    • 1

    查找没有对应任何用户的文件,即查找那些属主账户被删除的文件

    find . -nouser
    
    • 1

    2.7 根据正则表达式查找

    【正则表达式语法】

    find paathname -regextype "type" -regex "pattern"
    
    # 正则表达式的类型默认为emacs
    
    • 1
    • 2
    • 3

    2.8 结合xargs与exec使用

    查找所有exe文件并删除

    find . -type f -name "*.exe" -exec rm -f {} \;
    
    • 1

    2.9 其他

    在当前用户的家目录下,查找以wordpress开头的文件,并忽略大小写

    find-iname "wordpress*"
    
    • 1

    查找/var/www/html目录下非html后缀的文件

    find /var/www/html ! -name "*.html"
    
    # ! 表示反向查找,注意其位置
    
    • 1
    • 2
    • 3

    在/data目录下查找my.cnf并忽略/data/logs与/data/data目录

    find /data \(-path /data/logs -o -path /data/data\) -prune -o -print
    
    # -a 和 -o 类似于 and 和 or
    # -path "/data/dir1" -prune -o -print 
    # 相当于 -path "/data/dir1" -a -prune -o -print
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在/home一级目录下,不输出名字为点的行

    find /home -maxdepth 1 -type d ! -name '.'
    
    • 1

    三、扩展知识

    将找到的文件移到指定位置的几种方法

    find命令结合exec和xargs使用的区别

    四、命令总结

    好记性不如烂笔头,用来备查

  • 相关阅读:
    微服务之流控、容错组件sentinel
    Vue 路由懒加载, VueRouter一步完成Vue的路由懒加载 一行代码搞定懒加载
    【QT 读取JSON】 深入浅出 使用QT内置的QJson模块解析Json文件 匠心之作
    超级超级灵性的解题思路,看了全部的题解,没有人想到这个思路,真·力扣唯一——用单调栈处理LeetCode 1562 查找大小为M的最新分组
    Prometheus+Grafana实现服务性能监控:windows主机监控、Spring Boot监控、Spring Cloud Alibaba Seata监控
    【智能家居入门2】(MQTT协议、微信小程序、STM32、ONENET云平台)
    【Transformer 论文笔记】Attention is all you need
    利用LVM制作swap交换分区
    .NET 6学习笔记(3)——在Windows Service中托管ASP.NET Core并指定端口
    CTF比赛必备常用工具
  • 原文地址:https://blog.csdn.net/ln_ydc/article/details/128049086