我有一个由程序创建的包含多个重复文件的目录。副本具有相同的名称(数字除外),但并非所有具有相同名称的文件都是重复的。
删除重复项的简单命令是什么(理想情况下,单行仅限于 GNU coreutils,与有关脚本的问题不同)?
示例文件名:
parra1998.pdf
parra1998(1).pdf
parra1998(2).pdf
我有一个由程序创建的包含多个重复文件的目录。副本具有相同的名称(数字除外),但并非所有具有相同名称的文件都是重复的。
删除重复项的简单命令是什么(理想情况下,单行仅限于 GNU coreutils,与有关脚本的问题不同)?
示例文件名:
parra1998.pdf
parra1998(1).pdf
parra1998(2).pdf
一个快速而肮脏的解决方案是对文件进行哈希处理,然后搜索多次出现的哈希值并删除文件名已编号的哈希值。
例如:
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 "§"