Найти дубликаты хэшей
У меня есть куча файлов (4800 файлов), которые, как я считаю, содержат много дубликатов и троек. Проблема в том, что они также не имеют одинаковые имена. Я уже отсеял легких с такими же именами. Все файлы имеют узкий диапазон размеров, так что это не поможет.
Я подумал, что, возможно, можно было бы запустить скрипт, чтобы проверить хэши всех файлов в каталоге и сообщить о дублированных хешах. Кто-нибудь знает, как этого добиться?
Можно сделать на Linux и Windows.
Спасибо
1 ответ
Вот команда Powershell, которая хэширует все ваши файлы (в заданном каталоге) и выводит результат в файл CSV.
Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "\\Path\to\files\*.*" -Recurse) | Export-Csv C:\Temp\hashes.csv
После этого вы можете открыть файл CSV в Excel и выкорчевать дубликаты.
Обратите внимание, что командлет Get-FileHash доступен только в Powershell версии 4 или выше.
Мне нравится 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."
}