我在一个目录中有500个文件,其中一些是重复的。它们被称为prime-0.png到prime-499.png。我可以通过运行md5sum(例如)看到它们是重复的。
如何删除重复的文件,以便只留下一个副本
每一个?

md5sum prime-*

给我:
ed8c994d608ba2fde59e6a08c65bcc1f  prime-0.png
e7667b2c92359d23cd1cd251e54b41ba  prime-100.png
0afc9b57206cde58ff609a6476bde7a6  prime-101.png
[...]

我可以通过执行以下操作来查看复制了多少个:
md5sum prime-* |cut -f1 -d\ |sort|uniq -c|sort -rn|less

这给了我:
5 f905fde6abfbcbb00e079dcd4ecacbb7
3 efcdd042802fc0efc6d9fdf164df4e20
3 ed5a46d250c85809b57ee96385f655d2
3 c4cff53df13b87381b2c06538c339790
[...]

最佳答案

此答案仅适用于没有换行符的文件名。
awk在第一列中输出重复项:

md5sum prime-* | awk 'n[$1]++' | cut -d " " -f 3- | xargs -I {} echo rm {}

如果输出看起来不错,请删除echo
man xargs
-I replace-str:用从标准输入读取的名称替换初始参数中出现的replace-str。另外,未加引号的空格不会终止输入项;

关于linux - 如何在Linux中删除重复文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57736996/

10-12 16:14