在终端中检查重复项?

Léo*_* 준영 4 shell scripting

以下代码打印一长串包含哈希值和文件名的文件

md5sum *.java
Run Code Online (Sandbox Code Playgroud)

我尝试列出出现相同哈希值的行,但没有成功,这样我就可以删除相同的文件。

如何过滤和删除具有相同内容的相同文件?

Léo*_* 준영 5

fdupes减少对重复项的查看

使用fdupes命令行程序,例如

fdupes -r /home/masi/Documents/ > /tmp/1 
less -M +Gg /tmp/1
Run Code Online (Sandbox Code Playgroud)

它找到所有重复项并将它们存储在 temp 的文件中。less 命令显示所有行的行位置以及以百分比表示的进度。我fdupes从这个答案及其清晰的维基百科文章中找到了这里。您可以在 OSX 中通过 homebrew 安装它,也可以apt-get在 Linux 中通过 homebrew 安装它。

fdupes与可能的删除交互使用

跑步

fdupes -rd /home/masi/Documents
Run Code Online (Sandbox Code Playgroud)

您可以选择要删除或不删除哪个副本,交互式作品的示例视图:

Set 4 of 2664, preserve files [1 - 2, all]: all

   [+] /home/masi/Documents/Exercise 10 - 1.4.2015/task.bib
   [+] /home/masi/Documents/Exercise 9 - 16.3.2015/task.bib

[1] /home/masi/Documents/Celiac_disease/jcom_jun02_celiac.pdf
[2] /home/masi/Documents/turnerWhite/jcom_jun02_celiac.pdf

Set 5 of 2664, preserve files [1 - 2, all]: 2

   [-] /home/masi/Documents/Celiac_disease/jcom_jun02_celiac.pdf
   [+] /home/masi/Documents/turnerWhite/jcom_jun02_celiac.pdf
Run Code Online (Sandbox Code Playgroud)

您可以看到我有 2664 个重复项。如果有一些静态文件可以保存我想要的重复项的设置,那就太好了;我在这里开了一个关于这个的话题。例如,我在一些练习和作业中有相同的 bib 文件,因此当用户想要重复的文件时不要第二次询问。