Thanks, David — that clarification helps. You’re right: File Explorer’s wildcards and some quick searches will match lots of things (any file with a 1 or any bracketed expression), so you need a search that looks specifically for the literal string " (1)" (including the parentheses). The safest, most reliable ways are:
1) Use PowerShell (precise and safe — recommended)
- Open Start → type PowerShell → right‑click → Run as your user (not as Administrator).
- To just list files whose filename contains the literal "(1)":
- Replace the path with your actual pictures folder (example uses the Pictures folder).
Code:
Get-ChildItem -Path "$env:USERPROFILE\Pictures" -Recurse -File |
Where-Object { $_.Name -match '\(1\)' } |
Select-Object FullName
Explanation: the -match '(1)' uses a regex so the parentheses are treated literally. This will not delete anything — it just lists matches.
- To check how many matches you have:
Code:
Get-ChildItem -Path "$env:USERPROFILE\Pictures" -Recurse -File |
Where-Object { $_.Name -match '\(1\)' } |
Measure-Object
- To preview what would be deleted (do NOT run the remove until you verify):
Code:
Get-ChildItem -Path "$env:USERPROFILE\Pictures" -Recurse -File |
Where-Object { $_.Name -match '\(1\)' } |
Remove-Item -WhatIf
If the preview looks correct, remove the -WhatIf to actually delete.
2) If you want to remove only duplicates that have an exact counterpart without the " (1)" suffix
- This makes sure you don’t accidentally delete unique files that happen to have "(1)" in name:
Code:
Get-ChildItem -Path "$env:USERPROFILE\Pictures" -Recurse -File |
Where-Object { $_.Name -match '\(1\)'} |
ForEach-Object {
$origName = $_.Name -replace ' \(\d+\)','' # strip " (1)" or "(2)" etc.
$origPath = Join-Path $_.DirectoryName $origName
if (Test-Path $origPath) { [PSCustomObject]@{ Duplicate = $_.FullName; Original = $origPath }
}
} | Format-Table -AutoSize
- Review the list. When you’re satisfied, you can delete the duplicates (again, do a backup or use -WhatIf first).
3) Confirm duplicates by hash (optional, more certain)
- To compute SHA256 for a pair and verify they are bit‑identical:
Get-FileHash -Algorithm SHA256 "C:\path\to\file (1).jpg","C:\path\to\file.jpg"
- If the hashes match, the files are identical; if not, don’t delete.
4) Why File Explorer searches returned too many results
- Explorer/AQS and simple wildcards can treat parentheses or the number "1" as a general match depending on how you typed the query, so a search like (1) can match many filenames containing "1" or be interpreted loosely. For more reliable name-based searches use PowerShell or a file indexer tool. See the discussion of advanced search operators and faster name-based tools.
5) Faster GUI alternatives
- Everything (Voidtools) — instant, literal filename search (type (1) and it will show only names containing that exact string). Great for quick visual verification before running deletes. Using a dedicated duplicate‑finder (dupeGuru, Duplicate Cleaner, etc. is better when you need content-aware duplicates rather than just name‑based. Forum posts recommend these kinds of tools for inspecting duplicates safely.
6) Safety: iCloud sync considerations (important)
- Before deleting, pause or disable iCloud Photos sync on the PC so deletions don’t propagate to iCloud, or create a verified backup of your iCloud library. Photos.app and iCloud act on the local file system, so deleting the local file while sync is active can remove the cloud copy. See the notes about pausing sync / backing up first.
Quick recommended workflow for you
- Make a backup (copy Pictures\iCloud Photos to an external drive or download from iCloud.com). (Do this first.
- Pause iCloud for Windows (or sign out) so deletions won’t propagate to the cloud.
- Run the PowerShell listing command above and review the results.
- Option A (name-based): Use the "original exists" script to confirm pairs, then delete duplicates (with -WhatIf first).
Option B (content-aware): Use a duplicate finder to compare image contents and remove duplicates after you confirm.
- Re-enable iCloud and let it re-sync.
If you want, tell me:
- The exact path where iCloud Photos stores your pictures (for example C:\Users\David\Pictures\iCloud Photos\Photos), and
- Whether the duplicates always show the pattern " (1)" exactly or sometimes other numbers,
and I’ll give you a ready-to-run PowerShell script tailored to your path that will (1) list pairs of duplicate/(1) files, (2) create a CSV report, and (3 optionally) move duplicates to a quarantine folder instead of deleting them outright.