查找重复的哈希值

查找重复的哈希值

我有一堆文件(4800 个文件),我认为其中包含许多重复项和三元组。问题是它们的名称也不相同。我已经剔除了名称相同的简单文件。这些文件的大小范围都很小,所以这没什么用。

我认为也许可以运行一个脚本来检查目录中所有文件的哈希值,并报告重复的哈希值。有人知道如何实现这样的事情吗?

可以在 Linux 和 Windows 上执行。

谢谢

答案1

这是一个 Powershell 命令,它将对所有文件(在给定目录中)进行哈希处理并将结果输出到 CSV 文件。

Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "\\Path\to\files\*.*" -Recurse) | Export-Csv C:\Temp\hashes.csv

之后,您可以在 Excel 中打开 CSV 文件并找出重复项。

请注意,“Get-FileHash”cmdlet 仅在 Powershell 版本 4 或更高版本中可用。

答案2

我喜欢 Excel,但是 PowerShell 已经涵盖了这一点。

$ChooseDeleteMe = Get-ChildItem -Path "C:\OpenShare" -Recurse -File | Get-FileHash -Algorithm SHA1 | Group-Object -Property Hash | Where-Object Count -gt 1 | foreach {$_.Group | Select-Object Path, Hash} | Sort-Object Hash | Out-GridView -PassThru -Title "Select a Duplicate File OK to Delete (NO PROMPT NO UNDELETE)" | Select-Object -ExpandProperty Path
If ($ChooseDeleteMe.Count -ge 1) {
    Foreach ($DeleteMe in $ChooseDeleteMe) {
        # Remove the WhatIF once outout looks sensible
        Remove-Item -LiteralPath $DeleteMe -WhatIf
    }
} else {
    Write-Warning "No Duplicate Files were Found using the SHA1 Algorithm."
}

相关内容