V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
huangsijun17
V2EX  ›  Linux

[求助] 在百万到千万级个文件中查找最大的几个。

  •  
  •   huangsijun17 · 12 天前 · 1670 次点击

    现有一个 Linux ,安装有 minio ,存储在 XFS 文件系统下。我现在想找到某个 minio 存储路径下的若干子文件里最大的是哪几个文件? 文件总数未知,单个文件大小约为 1M~10M 级,初步估算的文件数量约为百万到千万级个。 find 后 sort 排序是基本不可能的了,我该怎么操作?

    12 条回复    2024-09-12 08:08:35 +08:00
    devopsdogdog
        1
    devopsdogdog  
       12 天前 via Android
    😂你就不能记录下来然后再去排序,或者多次分割后取数?
    hello2090
        2
    hello2090  
       12 天前
    TopK 优先级队列 线性复杂度
    GeekGao
        3
    GeekGao  
       12 天前
    使用 Python 的 os.walk() 函数和 yield 生成器递归遍历吧,写个简易统计程序。
    ArmsZ
        4
    ArmsZ  
       12 天前
    程序员代码面试指南(第 2 版)值得你一看
    NoOneNoBody
        5
    NoOneNoBody  
       12 天前
    除非你之前有安装一些记录文件位置的工具(类似 windows everything ),不然总要实时搜磁盘
    如果之前有安装定位工具,且有记录文件信息如字节数等,那参考该工具的手册,这样搜数据库比搜磁盘快

    python pandas 排序应该也很快,因为只有路径和字节数两个字段,只是前面递归获取全部路径比较慢
    总的来说,瓶颈在于是实时搜磁盘,还是从定位工具搜数据库
    MoYi123
        6
    MoYi123  
       12 天前   ❤️ 1
    find + sort 为什么不行, 这不是最简单的办法吗?
    ZZ74
        7
    ZZ74  
       12 天前
    @MoYi123 文件数量太多了。

    用 python 之类的写个程序 top k 就好了
    me1onsoda
        8
    me1onsoda  
       12 天前
    能把每个文件大小都记录下来就简单了,搞个大顶堆
    doraemonki
        9
    doraemonki  
       12 天前 via Android
    帮你把代码写好了 golang ,https://codecopy.cn/post/ez6qqh
    sn0wdr1am
        10
    sn0wdr1am  
       6 天前
    记录到数据库,查询数据库。
    kokerkov
        11
    kokerkov  
       5 天前
    有 GUI 吗? filelight
    webs
        12
    webs  
       4 天前
    你 find 时,带个文件最小大小的参数,数据量不就小很多了嘛,再 sort 一下,整个过程也就耗时 6s 以内,
    https://infras.cn
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   955 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 94ms · UTC 19:44 · PVG 03:44 · LAX 12:44 · JFK 15:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.