给定一个包含几千个文件的目录,请输出目录中所有文件名完全相同的列表[重复]

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。我试过散列,

Please check what I tried

答案

我认为这就是你要找的......至少在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运行它

以上是关于给定一个包含几千个文件的目录,请输出目录中所有文件名完全相同的列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

27个常用的 Linux 命令

PHP 获取给定目录的所有子目录

检查目录是不是包含具有给定扩展名的文件

列出给定起始目录中子目录中的所有文件

Python3:递归实现输出目录下所有的文件

JAVA输出指定目录下的子目录和子文件