FSlint 可以找到重复的文件。但是假设一个人有 10,000 首歌曲或图像,并且只想找到那些相同但名称不同的文件?现在,我得到了一个包含数百个欺骗的列表(在不同的文件夹中)。我希望名称保持一致,因此我只想查看具有不同名称的相同文件,而不是具有相同名称的相同文件。
具有高级参数(或不同程序)的 FSlint 可以实现这一点吗?
FSlint 可以找到重复的文件。但是假设一个人有 10,000 首歌曲或图像,并且只想找到那些相同但名称不同的文件?现在,我得到了一个包含数百个欺骗的列表(在不同的文件夹中)。我希望名称保持一致,因此我只想查看具有不同名称的相同文件,而不是具有相同名称的相同文件。
具有高级参数(或不同程序)的 FSlint 可以实现这一点吗?
如果脚本打印具有相同和不同文件名的所有重复文件,您可以使用以下命令行:
对于示例运行,我使用以下目录结构。具有相似名称(和不同编号)的文件具有相同的内容:
现在让我们看看我们的命令做一些魔术:
由新行分隔的每个组由具有相同内容的文件组成。非重复文件未列出。
我为您提供了另一个更灵活、更易于使用的解决方案!
复制下面的脚本并将其粘贴到
/usr/local/bin/dupe-check
(或任何其他位置和文件名,您需要此脚本的 root 权限)。通过运行以下命令使其可执行:
就像
/usr/local/bin
在每个用户的 PATH 中一样,现在每个人都可以直接运行它而无需指定位置。首先,您应该查看我的脚本的帮助页面:
您会看到,要获取当前目录(和所有子目录)中具有不同文件名的所有文件的列表,您需要
-d
标志和格式选项的任何有效组合。我们仍然假设相同的测试环境。具有相似名称(和不同编号)的文件具有相同的内容:
所以我们简单地运行:
这是脚本:
Byte Commander 出色的脚本有效,但没有给我所需的行为(列出所有重复文件,其中至少包含一个不同名称的文件)。我进行了以下更改,现在它非常适合我的目的(并且为我节省了大量时间)!我将第 160 行更改为:
args.name_filter == "d" and len(filenames[filename]) >= 1 and len(filenames[filename]) != len(hashes[filehash]))