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

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

由于某人的错误,我的数千个文件被复制,而且经常被复制多次。这导致数千个文件被命名为 filename(2)、filename(3) 等。

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

在其他地方搜索解决方案后,我尝试了 name:~=(2)、"(2)" 甚至 "(2)""(2)"。但都不起作用。我想排除文件名中只有 2 的文件,我只想要括号内有两个的文件。

有人可以帮忙吗?

答案1

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

使用以下搜索表达式:

name:~"*(2)*"

笔记:

  • ~是文字字符串指示符,后面的内容必须与整个文件名匹配

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

前:

在此处输入图片描述

后:

在此处输入图片描述


进一步阅读

答案2

我建议使用 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

要获取文件的目录列表,请使用这个简化脚本:

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

答案3

ROBOCOPY SOURCE_PATH TARGET_PATH *(2)* /S /W:2 /R:2 /256 /MOVE

在具有管理员权限的 DOS 框中发出此命令,它将移动所有名称和文件扩展名中包含 (2) 的文件(以及子目录中的文件),然后您就可以删除目标目录。

要了解更多信息:打开 DOS 命令窗口并输入:robocopy /?

相关内容