我有一个目录,里面有几千个文件,命名如下:
filename.ext
filename (1).ext
filename (2).ext
otherfile.ext
otherfile (1).ext
etc.
大多数带有括号数字的文件都是原始文件的副本,但在某些情况下它们不是。
如何保留原始文件,删除重复文件,但不丢失不同的文件?
我知道我可以rm *\).ext
,但这显然不能确保文件与原始文件匹配。
我使用的是 OS X,所以我有一个md5
功能类似于md5sum
Linux 的程序,尽管它将散列放在行尾而不是开头。我在想我可以使用 awk 脚本来获取 的输出md5 *.ext | awk 'some script'
,通过 md5 查找重复项并删除它们,但是命令行太长(bash: /sbin/md5: Argument list too long
)。
而且我不知道该在脚本中写什么。我正在考虑用这个将东西存储在一个数组中:
awk '{a[$NF]++} a[$NF]>1{sub(/).*/,""); sub(/.*(/,""); system("rm " $0);}'
但这似乎总是删除我的原件。
我究竟做错了什么?我该怎么做?
谢谢。