请教一下文件去重软件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
276562578
V2EX    软件

请教一下文件去重软件

  •  
  •   276562578 114 天前 1143 次点击
    这是一个创建于 114 天前的主题,其中的信息可能已经有所发展或是发生改变。
    p>找了很多的文件去重软件,都似乎没法满足我的需求,想着干脆自己写一个,写之前问问 v 友是否有我不知道的软件实际可以满足我的需求,避免造轮子

    我的去重是经常乱放文件导致的,我希望能够把这些文件整理一下,比如我现在有一个备份的文件 photo

    1. 我想找到 photo1 和 photo2 中完全一致的文件,删除 photo2 的,保留 photo1 的
    2. 如果有文件名一致,但文件内容不一致的,可以根据规则,比如文件大小,时间来自动全部处理掉
    3. photo1 中的文件散列值 md5 可以自动的存下来,免得重扫
    4. 对于文件大小不一致这种肯定不可能一致的直接跳过
    5. (可选)对于超过一定大小如 1G 的,文件 bit 数也完全一致的,只抽样比对节省时间,抽样结果一致再全部验证确保完全一致
    6. 散列算法保证几乎不可能有意外
    7. (可选)散列算法要是 xxhash 这种超快的就最好了

    我的核心诉求是前三条

    感谢 v 友

    13 条回复    2025-06-21 15:22:17 +08:00
    bzw875
        1
    bzw875  
       114 天前
    我一般是这么做的,把诉求丢给 chatGPT ,写我看懂的语言,比如 node.js 。
    然后自己先调试。免得 AI 幻觉把我文件删除了。
    你可以让他写 Python ,或者 shell
    Cu635
        2
    Cu635  
       114 天前
    dupegure 试一试?

    这个在 GUI 操作上可能还是有提升空间,不过我用了一阵子了感觉功能上没啥大毛病。

    它默认情况是普通模式,对文件是看内容完全一致进行判断;可以设置为“图片”模式,这样它对图片文件就是看图像内容判断一致性的(视频不行)。

    不过 2 那个它倒是没有,因为这种时候 dupegure 会认为文件不一致,不会出现在结果当中。当然设置了“图片”的话就是看图像内容了。

    4 、5 、6 、7 这些应该说是开发需求,而不是使用需求了……
    NoOneNoBody
        3
    NoOneNoBody  
       114 天前
    windows:clonespy 免费不开源 1/3/4/6/7 它主要是根据 size+crc32 的,好像也有 name 或 name+size 的,就是你说的 2 ,但我基本没用过这种方式
    5 即使其他工具应该没有,除非自己写

    其他平台不知道
    sunnyadamm
        4
    sunnyadamm  
       114 天前
    duplicate cleaner pro 貌似比较符合你,windows 的
    276562578
        5
    276562578  
    OP
       114 天前
    @Cu635 2 还是挺重要的,因为一些原因我的图片很多是同名但是有些是缩略图,感觉是得自己写了
    276562578
        6
    276562578  
    OP
       114 天前
    @NoOneNoBody 2 主要是遇到重复的文件后的处理方式,一个一个选就很麻烦,我去试试看这个软件
    276562578
        7
    276562578  
    OP
       114 天前
    @sunnyadamm 好的,这个我也试试看
    NoOneNoBody
        8
    NoOneNoBody  
       114 天前
    自己写我也写了,python
    1. 两组 dataframe 'fullpath' df1/df2 ,各自求 size ,假如要删除 df1 中的
    2.df3=df1.merge(df2, on='size', how='left', suffix=('_1', '_2')),然后 df3 去掉'fullpath_2'为 nan 的行
    3.再 df3 用 fullpath_1/fullpath_2 求 crc32 或其他 hash ,再根据这个 hash 在匹配一次

    如果所有文件之前已经 hash 过,有保留数据,可以直接第 3 步,on=['size', hash]就行
    还有其他以此扩展的思路(匹配的不止是文件 hash ,而是图像内容),就不细说了
    图片去重我每天都在做,但不是 file hash ,file hash 我反而懒得搞,扔给 clonspy 完成
    dcsuibian
        9
    dcsuibian  
       114 天前
    用 zfs 文件系统,开启去重,这样只占一份的空间。甚至不是文件级而是块级。
    avenger
        10
    avenger  
       114 天前
    Eagle 有去重功能,看是不是适合你
    NoOneNoBody
        11
    NoOneNoBody  
       114 天前
    @276562578 #6
    有的,面板 1|2(就是你的第一条需求),文件新 | 旧、字节数大 | 小、文件名长 | 短 8 种方式自动删除
    276562578
        12
    276562578  
    OP
       114 天前
    @dcsuibian 需要的不是去重哦,而是删掉多余的备份,并不是为了减少空间占用
    Cu635
        13
    Cu635  
       113 天前
    @276562578 #5
    那就是 dupegure 的“图片”模式,这样它对图片文件就是看图像内容判断一致性的,忽略图片格式(扩展名等)、分辨率等。

    你在主楼里面说的 2,说是“文件名一致,但文件内容不一致”,我还以为是完全不一样呢。不过 dupegure 的“普通”模式就是要求完全一样了。

    不过这个跟“文件名”就没有任何关系了,“文件名”是个干扰项。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3129 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:35 PVG 08:35 LAX 17:35 JFK 20:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86