Files
Torben Sorensen b0036faa0a
Some checks failed
Deploy to Web Server flyer-crawler.projectium.com / deploy (push) Failing after 37m20s
get rid of mockImplementation(() => promise) - causing memory leaks
2025-11-27 11:58:55 -08:00

58 lines
2.2 KiB
PowerShell

<#
.SYNOPSIS
Scans a directory and its subdirectories to find duplicate files based on content.
.DESCRIPTION
This script recursively searches through a specified directory, calculates the SHA256 hash
for each file, and then groups files by their hash. It reports any groups of files
that have identical hashes, as these are content-based duplicates.
.EXAMPLE
.\Find-Duplicates.ps1
(After setting the $targetDirectory variable inside the script)
#>
# --- CONFIGURATION ---
# Set the directory you want to scan for duplicates.
# IMPORTANT: Replace "C:\Path\To\Your\Directory" with the actual path.
$targetDirectory = "C:\Path\To\Your\Directory"
# --- SCRIPT ---
# Check if the target directory exists
if (-not (Test-Path -Path $targetDirectory -PathType Container)) {
Write-Host "Error: The directory '$targetDirectory' does not exist." -ForegroundColor Red
# Exit the script if the directory is not found
return
}
Write-Host "Scanning for duplicate files in '$targetDirectory'..." -ForegroundColor Yellow
Write-Host "This may take a while for large directories..."
# 1. Get all files recursively from the target directory.
# 2. Calculate the SHA256 hash for each file.
# 3. Group the files by their calculated hash.
# 4. Filter the groups to find those with more than one file (i.e., duplicates).
$duplicateGroups = Get-ChildItem -Path $targetDirectory -Recurse -File | Get-FileHash -Algorithm SHA256 | Group-Object -Property Hash | Where-Object { $_.Count -gt 1 }
if ($duplicateGroups) {
Write-Host "`nFound duplicate files:" -ForegroundColor Green
# Loop through each group of duplicates and display the information
$duplicateGroups | ForEach-Object {
Write-Host "`n--------------------------------------------------"
Write-Host "The following files are identical (Hash: $($_.Name)):" -ForegroundColor Cyan
# List all files within the duplicate group
$_.Group | ForEach-Object {
Write-Host " - $($_.Path)"
}
}
Write-Host "`n--------------------------------------------------"
Write-Host "Scan complete." -ForegroundColor Green
}
else {
Write-Host "`nNo duplicate files found in '$targetDirectory'." -ForegroundColor Green
}