我有一个目录,其中有多个文件具有相同的内容但名称不同,我想要删除重复项的唯一标准是根据大小对它们进行排序,然后删除具有相同大小的文件,例如当我键入时
find . -type f -printf "%p - %s\n" | uniq -D -f1 | sort -nr -k3
我得到了
./abc.txt - 595 ./acd.txt - 595 ./dbc.txt - 595 ./jed.txt - 595 ./end.txt - 595 ./wtw.txt - 595 ./hds.txt - 595 ./dkd.txt - 523 ./kjk.txt - 523
我只想保留
./abc.txt ./dkd.txt
答案 0 :(得分:1)
find . -type f -printf "%p - %s\n" | uniq -D -f1 | sort -nr -k3
uniq
需要对输入进行排序,因此您必须将sort
放在其前面。
此处uniq
选项-D
不合适。
sort
选项-u
可以完成uniq
的工作。
find . -type f -printf "%p - %s\n" | sort -nru -k3
答案 1 :(得分:0)
这是一种可以复制出一个副本版本的方法:
find . -type f -printf "%p - %s\n" | uniq -d -f1 | cut -d' ' -f1 | xargs -I{} cp {} /path/to/dir