Sugiro um script do PowerShell que:
- localiza todos os arquivos com um
(1)
à direita para o BaseName recursivamente por um dado
pasta inicial.
- Faz um diretório sem o número para localizar todos os possíveis dupes e, em seguida, cria um hash para excluir apenas cópias exatas, solicitando confirmação.
- Se os arquivos forem alterados nesse meio tempo, não haverá mais cópias exatas e serão eliminados.
Altere o Push-Location
para ajustar sua pasta inicial, salve o arquivo com a extensão .ps1
e execute-o.
## Q:\Test17\SU_1230033.ps1
## inspired by http://n3wjack.net/2015/04/06/find-and-delete-duplicate-files-with-just-powershell/
Push-Location "D:\"
Get-ChildItem "* (1).*" -Recurse -File | ForEach-Object {
$BaseFile = (Join-Path $_.Directory ($_.BaseName -replace ' ?\(\d+\)'))+"*$($_.Extension)"
Get-ChildItem $BaseFile | Get-FileHash | Group-Object Hash | Where { $_.Count -gt 1 } |
ForEach-Object {$_.Group | Select-Object -Skip 1 } | Remove-Item -Confirm
}
PopD
Para obter apenas uma listagem dos arquivos, use este script reduzido:
Push-Location "D:\"
Get-ChildItem "* (1).*" -Recurse -File | ForEach-Object {
$BaseFile = (Join-Path $_.Directory ($_.BaseName -replace ' ?\(\d+\)'))+"*$($_.Extension)"
Get-ChildItem $BaseFile
}
PopD