我有一个包含多个重复文件的目录,由程序创建。重复项具有相同的名称(数字除外),但并非所有具有相同名称的文件都是重复项。
删除重复项的简单命令是什么(理想情况下仅限于 GNU coreutils 的单行,不像关于脚本的问题)?
文件名示例:
parra1998.pdf parra1998(1).pdf parra1998(2).pdf
答案1
一个快速但肮脏的解决方案是对文件进行哈希处理,然后搜索多次出现的哈希值并删除文件名编号的哈希值。
例如:
sha1sum * > files.sha1sum cat files.sha1sum | cut -f1 -d" " | sort | uniq -c | grep -v " 1 " | sed --regexp-extended 's/^[^0-9]+[0-9] //g' | xargs -n1 -I§ grep § files.sha1sum | sed --regexp-extended 's/^[^ ]+ +//g' | grep -v '(' | xargs -n1 -I§ rm "§"