当前位置: 首页>>技术教程>>正文


如何查找(和删除)重复文件

, ,

问题描述

我有一个很大的音乐集合,里面有一些重复的东西。有什么方法可以找到重复的文件。至少通过做一个散列并查看两个文件是否具有相同的散列。

除了扩展名之外,还可以找到具有相同名称的文件的奖励分数 – 我认为我有一些mp3和ogg格式的歌曲。

如果这是最简单的方法,我很高兴使用命令行。

最佳解决方案

我为此使用fdupes。它是一个命令行程序,可以从sudo apt install fdupes的存储库中安装。你可以把它叫做fdupes -r /dir/ect/ory,它会打印出一系列的模糊。 fdupes还有一个simple Homepage和一个Wikipedia article,它列出了一些更多的程序。

次佳解决方案

FSlint有一个GUI和一些其他功能。从他们的FAQ中解释重复检查算法:

1. exclude files with unique lengths
2. handle files that are hardlinked to each other
3. exclude files with unique md5(first_4k(file))
4. exclude files with unique md5(whole file)
5. exclude files with unique sha1(whole file) (in case of md5 collisions).

fslint

第三种解决方案

programs/scripts/bash-solutions列表,可以找到重复项并在nix下运行:

  1. dupedit:无需校验和即可比较多个文件。当多个路径指向同一个文件时,避免将文件与自己进行比较。

  2. dupmerge:运行在各种平台上(Cygwin,* nix,Linux等的Win32 /64)

  3. dupseek:Perl,其算法经过优化以减少读取次数。

  4. fdf:基于Perl /c并且可以在大多数平台上运行(Win32,* nix和其他可能的)。使用MD5,SHA1和其他校验和算法

  5. freedups:shell脚本,用于搜索您指定的目录。当它找到两个相同的文件时,它很难将它们链接在一起。现在两个或多个文件仍然存在于它们各自的目录中,但只有一个数据副本存储在磁盘上;两个目录条目指向相同的数据块。

  6. fslint:具有命令行界面和GUI。

  7. liten:纯Python重复数据删除命令行工具和库,使用md5校验和和新颖的字节比较算法。 (Linux,Mac OS X,* nix,Windows)

  8. liten2:重写原始的Liten,仍然是命令行工具,但使用SHA-1校验和(Linux,Mac OS X,* nix)以更快的交互模式进行重写。

  9. rdfind:根据输入参数(要扫描的目录)顺序重复排列的少数几个之一,以便不在“原始/众所周知”源(如果给出多个目录)中删除。使用MD5或SHA1。

  10. rmlint:具有命令行界面的快速查找器和多种查找其他lint的选项(使用MD5)

  11. ua:Unix /Linux命令行工具,设计用于查找(以及类似的)。

  12. findrepe:免费Java-based 命令行工具,用于高效搜索重复文件,可以在zip和jar中搜索(GNU /Linux,Mac OS X,* nix,Windows)

  13. fdupe:用Perl编写的一个小脚本。快速高效地完成工作。 1

  14. ssdeep:使用Context Triggered Piecewise Hashing识别几乎相同的文件

第四种方案

如果您的重复数据删除任务与音乐相关,请首先运行picard应用程序以正确识别和标记您的音乐(以便即使名称不正确,也可找到重复的.mp3 /.ogg文件)。请注意,picard也可以作为Ubuntu软件包提供。

完成后,根据musicip_puid标签,您可以轻松找到所有重复的歌曲。

第五种方案

另一个执行这项工作的脚本是rmdupe。从作者的页面:

rmdupe uses standard linux commands to search within specified folders for duplicate files, regardless of filename or extension. Before duplicate candidates are removed they are compared byte-for-byte. rmdupe can also check duplicates against one or more reference folders, can trash files instead of removing them, allows for a custom removal command, and can limit its search to files of specified size. rmdupe includes a simulation mode which reports what will be done for a given command without actually removing any files.

第六种方案

你有没有尝试过

finddup

要么

finddup -l

我想它工作正常。

第七种方案

对于音乐相关的重复识别和删除http://musicbrainz.org/的Picard和Jaikoz是最佳解决方案。 Jaikoz我相信会根据歌曲文件的数据自动标记您的音乐。您甚至不需要该歌曲的名称来识别歌曲并将所有元数据分配给它。尽管免费版本只能在一次运行中标记有限数量的歌曲,但您可以随意多次运行它。

第八种方案

我使用komparatorsudo apt-get install komparator(Ubuntu 10.04+) – 作为GUI-tool在手动模式下查找重复项。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/453.html,未经允许,请勿转载。