给定一个包含几千个文件的目录,请输出目录中所有文件名完全相同的列表[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给定一个包含几千个文件的目录,请输出目录中所有文件名完全相同的列表[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
,即具有相同的内容。
func(a_directory_name)输出 - > {“匹配”:[[fn1,fn2 ...],[fn3,fn4 ...] ...]}
例如func(“/ home / my / files”)其中目录/ home / my / files可能包含foo.txt,foo.iso,foo.jpeg,bar.txt,bar.doc,baz.csv,baz.ppt等并且说文件foo.txt与bar.doc相同,foo.iso与baz.csv和baz.ppt相同,那么输出将是:
{
"matches": [
[
"foo.txt",
"bar.doc"
],
[
"foo.iso",
"baz.csv",
“baz.ppt”
]
]
}
您可以使用您喜欢的任何编程语言对响应进行编码
PS。我试过散列,
答案
我认为这就是你要找的......至少在Groovy中:
import groovy.json.JsonBuilder
import java.security.MessageDigest
def folderOfInterest = args[0]
println "Grouping by content for files in ${folderOfInterest}"
def result = new File(folderOfInterest)
.listFiles({ f -> f.file } as FileFilter)
.collectEntries { f ->
[f.name, MessageDigest.getInstance('MD5').with { d ->
f.eachByte(4096) {
b, len -> d.update(b, 0, len)
}
d.digest().encodeHex().toString()
}]
}
.groupBy { it.value }
.collect { it.value.keySet() }
.findAll { it.size() > 1 }
println new JsonBuilder(result).toPrettyString()
保存为Group.groovy
然后用groovy Group.groovy /path/to/directory
运行它
以上是关于给定一个包含几千个文件的目录,请输出目录中所有文件名完全相同的列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章