问题描述
我有一个很大的音乐集合,里面有一些重复的东西。有什么方法可以找到重复的文件。至少通过做一个散列并查看两个文件是否具有相同的散列。
除了扩展名之外,还可以找到具有相同名称的文件的奖励分数 – 我认为我有一些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下运行:
dupedit:无需校验和即可比较多个文件。当多个路径指向同一个文件时,避免将文件与自己进行比较。
dupmerge:运行在各种平台上(Cygwin,* nix,Linux等的Win32 /64)
dupseek:Perl,其算法经过优化以减少读取次数。
fdf:基于Perl /c并且可以在大多数平台上运行(Win32,* nix和其他可能的)。使用MD5,SHA1和其他校验和算法
freedups:shell脚本,用于搜索您指定的目录。当它找到两个相同的文件时,它很难将它们链接在一起。现在两个或多个文件仍然存在于它们各自的目录中,但只有一个数据副本存储在磁盘上;两个目录条目指向相同的数据块。
fslint:具有命令行界面和GUI。
liten:纯Python重复数据删除命令行工具和库,使用md5校验和和新颖的字节比较算法。 (Linux,Mac OS X,* nix,Windows)
liten2:重写原始的Liten,仍然是命令行工具,但使用SHA-1校验和(Linux,Mac OS X,* nix)以更快的交互模式进行重写。
rdfind:根据输入参数(要扫描的目录)顺序重复排列的少数几个之一,以便不在“原始/众所周知”源(如果给出多个目录)中删除。使用MD5或SHA1。
rmlint:具有命令行界面的快速查找器和多种查找其他lint的选项(使用MD5)
ua:Unix /Linux命令行工具,设计用于查找(以及类似的)。
findrepe:免费Java-based 命令行工具,用于高效搜索重复文件,可以在zip和jar中搜索(GNU /Linux,Mac OS X,* nix,Windows)
fdupe:用Perl编写的一个小脚本。快速高效地完成工作。 1
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我相信会根据歌曲文件的数据自动标记您的音乐。您甚至不需要该歌曲的名称来识别歌曲并将所有元数据分配给它。尽管免费版本只能在一次运行中标记有限数量的歌曲,但您可以随意多次运行它。
第八种方案
我使用komparator – sudo apt-get install komparator(Ubuntu 10.04+) – 作为GUI-tool在手动模式下查找重复项。
参考资料