尝试在Windows资源管理器中搜索带有特殊字符的文件名(Windows 10)


2

通过一个非常讨厌的人的错误,我的数千个文件已被复制,通常是多次。这导致了数千个名为filename(2),filename(3)等的文件。

我的好主意是搜索(2)并删除所有结果,但搜索会一直显示文件名中包含数字2的所有文件,而不是包含括号。

我试过名字:〜=(2),“(2)”甚至“(2)”“(2)”在其他地方寻找解决方案之后。他们都没有工作。我想要排除文件名中只有2的文件,我只想要在括号内有两个文件。

有人可以帮忙吗?


那么你是在寻找一个Windows资源管理器解决方案,还是一个脚本解决方案呢?
Pimp Juice IT

Answers:


4

我只想要括号内有两个的文件 (2)

使用以下搜索表达式:

name:~"*(2)*"

笔记:

  • ~ 是文字字符串指示符,以下内容必须匹配整个文件名

  • 根据您的需求filename:可能会比name:

之前:

在此输入图像描述

后:

在此输入图像描述


进一步阅读


@Sia您需​​要更多帮助吗?如果这回答了您的问题,请不要忘记接受答案
DavidPostill

不,谢谢,修好了!这是我第一次使用这个网站,我不知道接受答案。勾选!
Sia

0

我建议使用PowerShell脚本:

  • 查找(1)给定起始文件夹的所有带有BaseName 尾随的文件。
  • 没有数字的目录是否找到所有可能的欺骗,然后创建哈希只删除精确副本,要求确认。
  • 如果在此期间更改文件,则这些文件不再是精确副本并且会丢失。

更改Push-Location以适合您的起始文件夹,使用扩展名保存文件.ps1并执行它。

## Q:\Test\2017\07\15\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

要获取文件的dir列表,请使用此简化脚本:

Push-Location "D:\"
Get-ChildItem "* (1).*" -Recurse -File | ForEach-Object {
    $BaseFile = (Join-Path $_.Directory ($_.BaseName -replace ' ?\(\d+\)'))+"*$($_.Extension)"
    Get-ChildItem $BaseFile 
}
PopD

为什么使用复杂的PowerShell脚本可以使用Explorer搜索功能轻松完成?
DavidPostill

@DavidPostill因为附加功能?它确实只删除二进制相等文件。
LotPings

好。但这不是问题的问题:)
DavidPostill

恐怕我根本不知道如何使用脚本,David的解决方案对我有用。但是谢谢你的帮助!
Sia
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.