Найти дубликаты хэшей

У меня есть куча файлов (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."
}
Другие вопросы по тегам