我有一堆文件(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."
}