Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
huangsijun17
V2EX  ›  Linux

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

  •  
  •   huangsijun17 · Sep 4, 2024 · 3181 views
    This topic created in 645 days ago, the information mentioned may be changed or developed.

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

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

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

    用 python 之类的写个程序 top k 就好了
    me1onsoda
        8
    me1onsoda  
       Sep 4, 2024
    能把每个文件大小都记录下来就简单了,搞个大顶堆
    doraemonki
        9
    doraemonki  
       Sep 4, 2024 via Android
    帮你把代码写好了 golang ,https://codecopy.cn/post/ez6qqh
    sn0wdr1am
        10
    sn0wdr1am  
       Sep 10, 2024
    记录到数据库,查询数据库。
    kokerkov
        11
    kokerkov  
       Sep 11, 2024
    有 GUI 吗? filelight
    webs
        12
    webs  
       Sep 12, 2024
    你 find 时,带个文件最小大小的参数,数据量不就小很多了嘛,再 sort 一下,整个过程也就耗时 6s 以内,
    https://infras.cn
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5538 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 07:10 · PVG 15:10 · LAX 00:10 · JFK 03:10
    ♥ Do have faith in what you're doing.