Skip to content

Latest commit

 

History

History
80 lines (61 loc) · 4.04 KB

File metadata and controls

80 lines (61 loc) · 4.04 KB

DuplicateFF v1.1.0

Version License Language Platform

Professional duplicate file finder with a progressive hashing pipeline for terabyte-scale scanning. PowerShell WPF with Catppuccin Mocha dark theme.

DuplicateFF Screenshot

Features

  • 6-Stage Progressive Hashing - Size grouping, prefix hash, suffix hash, full SHA256, byte-verify eliminates 95%+ of files before full reads
  • Reference Folders - Mark folders as protected; duplicates will never be selected from these locations
  • File Type Filters - Images, Videos, Audio, Documents, or All Files with min/max size limits
  • Exclude Patterns - Skip .git, node_modules, $RECYCLE.BIN, and custom folder patterns
  • Image Preview - Inline preview panel for visual verification before deletion
  • Auto-Select Rules - Keep Newest, Oldest, From Reference Folders, Largest, or Shortest Path
  • Safe Deletion - Recycle Bin (default), Permanent Delete, or Hardlink replacement with atomic temp-link safety
  • Right-Click Context Menu - Open File, Open Folder, Copy Path, Copy Hash, Select Group, Select All from Folder
  • Search/Filter Results - Real-time filtering by filename or folder path
  • CSV Export - RFC-compliant CSV with UTF-8 BOM for Excel compatibility
  • Action Audit Log - JSON log of every delete/hardlink operation with timestamps and hashes
  • Async Scanning - Non-blocking UI with elapsed time, scan statistics, and cancellation
  • NTFS Hardlink Detection - Excludes same-inode files from results to avoid inflated counts
  • Find Unique Files - Inverse mode finds files in scan folders with no match in reference
  • Duplicate Folders - Detects entire directory trees that are identical copies
  • Dark Theme - Catppuccin Mocha with High Contrast support and screen reader accessibility
  • Full CLI Mode - Scriptable with -Scan, -Reference, -AutoSelect, -Delete, -Json, -DryRun, -MaxSize, -Exclude, -IncludePattern, -ExcludePattern, -MinDate, -MaxDate, -FindUnique, -FindDupeFolders

Usage

GUI

.\DuplicateFF.ps1
  1. Click Add Folder to add directories to scan (or drag-and-drop folders)
  2. Optionally add Reference Folders (protected from deletion)
  3. Set filters (min/max size, file type, subfolders)
  4. Click Scan for Duplicates
  5. Review results, use auto-select or manual checkbox selection
  6. Right-click rows for context menu actions
  7. Choose delete mode and click Delete Selected

CLI

.\DuplicateFF.ps1 -Scan "D:\Photos" -Reference "D:\Archive" -AutoSelect KeepNewest -Delete RecycleBin
.\DuplicateFF.ps1 -Scan "C:\Projects" -MaxSize "1 GB" -Exclude ".git","node_modules" -Json
.\DuplicateFF.ps1 -Scan "D:\Media" -IncludePattern "\.(jpg|png|raw)$" -DryRun -Delete Permanent -AutoSelect KeepOldest
.\DuplicateFF.ps1 -Scan "C:\Source" -Reference "D:\Backup" -FindUnique
.\DuplicateFF.ps1 -Scan "D:\Data" -FindDupeFolders
.\DuplicateFF.ps1 -Scan "D:\Photos" -MinDate "2024-01-01" -MaxDate "2024-12-31"

How It Works

The progressive hashing pipeline avoids reading entire files whenever possible:

Stage Action Typical Elimination
1 Enumerate files with filters N/A
2 Group by file size ~70% of files
3 SHA256 of first 4KB ~15% more
4 SHA256 of last 4KB ~5% more
5 Full SHA256 hash Final grouping
6 Byte-by-byte verification Hash collision protection

Only files surviving all stages get fully hashed and byte-verified, making scans fast and safe even on large datasets.

Research

See Building a professional duplicate file finder: A technical guide for the research behind this tool, covering algorithm selection, perceptual hashing for AI upscale detection, and performance architecture.

License

MIT License