最近我需要删除很多重复项。我正在合并三个或四个文件系统,我希望能够经济地使用空间。起初,fdupes
它似乎是这项工作的最佳工具,但我越来越遇到限制。
考虑命令fdupes -rdN somedirectory/
。这会对 somedirectory 的子目录中的所有文件进行散列。
当它遇到重复项时,它会删除它们,因此所有内容都只有一个副本。
但是如果我想保留somedirectory/subdirectory1/somefile
并且实际上有四个重复项,并且程序首先遇到其中一个重复项怎么办?然后它删除了somedirectory/subdirectory1/somefile
我不想要的。
我希望能够以某种方式指定要保留的重复项。到目前为止,处理重复项的标准程序(duff、FSLint)似乎都不允许这种行为的自动化。我不想自己动手,所以这就是我问这个问题的原因。
我希望能够写出类似的东西
killdupes -rdN --keep=filesin,somedirectories,separated,by,commas somedirectory/
Run Code Online (Sandbox Code Playgroud) 我试图找到一种方法来检查给定目录中的重复文件(即使名称不同),并将它们替换为指向第一次出现的符号链接。我试过,fdupes
但它只列出了那些重复项。
这就是上下文:我正在根据自己的喜好自定义图标主题,我发现许多图标,即使它们在父文件夹中具有不同的名称和不同的位置,并且用于不同的目的,基本上都是相同的图片。由于在真正需要一个图像时应用相同的修改二十或三十次是多余的,我只想保留一个图像并符号链接所有其他图像。
例如,如果我fdupes -r ./
在目录中运行testdir
,它可能会返回以下结果:
./file1.png
./file2.png
./subdir1/anotherfile.png
./subdir1/subdir2/yetanotherfile.png
Run Code Online (Sandbox Code Playgroud)
鉴于此输出,我想只保留 file file1.png
,删除所有其他文件并用指向它的符号链接替换它们,同时保留所有原始文件名。所以file2.png
会保留它的名字,但会变成一个链接file1.png
而不是重复。
这些链接不应指向绝对路径,而应相对于父testdir
目录;即yetanotherfile.png
会点../../file1.png
,不/home/testuser/.icons/testdir/file1.png
我对涉及 GUI 和 CLI 的解决方案都感兴趣。fdupes
我已经引用了它不是强制性的,因为它是我知道的一种工具,但我对使用其他工具的解决方案也持开放态度。
我很确定一个 bash 脚本来处理所有这些应该不难创建,但我不够专业,无法找出如何自己编写它。
我目前正在尝试使用fdupes
. 我想相互比较两个文件夹,然后删除这些目录之一中的所有重复文件。
例子:
文件被自动存储在/srv/
- 那里有很多重复项。他们都将保持原样。我也有一个名为的目录/watchfolder/
,watchfolder
如果它们存在于/srv/
.
我试过fdupes -r srv/ watchfolder/
,反之亦然。但它一直在搞乱我的文件srv/
。
与许多拥有多个设备和同步目录的用户一样,我有相当稳定的重复媒体文件流。我喜欢定期清除重复项,通常是当我要转向新的“同步范例”时。(上次是 Nextcloud。这次是 Syncthing。)我想在我指定为 fdupes 参数的路径中进行搜索,但要阻止任何从搜索路径之一删除文件的尝试。我该怎么做呢?我也愿意接受 fdupes 的替代品。
参考: https: //github.com/adrianlopezroche/fdupes