Este script é finddupe.ps1. Basicamente, o que ele faz é listar arquivos duplicados em seu PC com um tamanho maior que 1 megabyte. Para meu pc, ele encontrou mais de onze mil. Ele funciona a partir do diretório atual, mas muda para o diretório raiz dessa unidade, de modo que captura todos os arquivos dessa unidade. Normalmente, faria o hash dos arquivos também. Ainda estou pensando em uma maneira rápida e suja de fazer isso. Posso editar este post com essa atualização. Com base na saída que eu estava vendo, os hashes não terão um impacto muito grande. Parece muito comum ter o mesmo arquivo em dois lugares no windows.
cd
$dirlisting = Get-ChildItem -Recurse -file * | Sort-Object -property length
$dirgrouping = $dirlisting | Group-Object -Property length | Sort-Object -property count
$table = @()
foreach ($group in $dirgrouping)
{
if($group.count -le 1)
{
continue
}
if($group.name -le (1024*1024))
{
continue
}
$i = 0
$row = New-Object PSObject
Add-Member -InputObject $row -Name "Size" -Value $group.name -MemberType NoteProperty
Add-Member -InputObject $row -Name "Count" -Value $group.count -MemberType NoteProperty
foreach ($file in $group.group)
{
Add-Member -InputObject $row -Name "Path $i" -Value $file.fullname -MemberType NoteProperty
Add-Member -InputObject $row -Name "File $i" -Value $file.name -MemberType NoteProperty
$i++
}
$table += $row
}
$table
$table | export-csv -Path "<drive>:<dir>finddupe.$((get-date).tostring("yy-MM-dd-HH-mm-ss")).csv" -NoTypeInformation