Some checks failed
Deploy to Web Server flyer-crawler.projectium.com / deploy (push) Failing after 37m20s
58 lines
2.2 KiB
PowerShell
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
|
|
}
|
|
|