在 Win10 上将许多文件的连字符 (-) 更改为下划线 (_):Windows 搜索黑客

在 Win10 上将许多文件的连字符 (-) 更改为下划线 (_):Windows 搜索黑客

我有一个包含各种文件的目录,其中一些文件名有用连字符/破折号分隔的子部分,例如foo-bar.pdf

不幸的是,这似乎混淆了 Windows 10 资源管理器的搜索。例如,搜索字符串name:(foo bar)似乎找不到名为的文件,foo-bar.pdf但是,如果我用下划线将其重命名为,它确实会找到相同的文件foo_bar.pdf(如果有人看到不同的行为,我很想知道!)

因此,我想将所有带有破折号/连字符的文件重命名为下划线。有什么好方法可以先筛选出此类文件列表,然后再重命名它们?

例如在 Linux 中我会使用 Regex 等编写一个 shell 脚本或一个行程序mv, grep sed, awk

在 Windows 上有没有什么快捷的方法可以做到这一点?

答案1

对于 cmd/命令行使用ren/rename循环for和子字符串替换variable:-=_"

  • // in bat ::
for %%i in (*-*.*)do set "_name=%%~ni" && cmd/v/c "ren "%%~i" "!_name:-=_!%%~xi""

  • // in cmd command line ::
for %i in (*-*.*)do set "_name=%~ni" && cmd/v/c "ren "%~i" "!_name:-=_!%~xi""

  • // in PowerShell ::
ls *.pdf| ren -new {$_.basename.replace('-','_')+$_.extension}

答案2

1.使用 Poweshell

您可以尝试在 Powershell 中使用以下命令:

dir | Rename-Item -NewName {$_.Name -Replace '-','_'}

它列出目录中的文件,然后通过替换-来重命名文件_

2. 使用 PowerRename

您也可以使用随附的 PowerRename 进行操作动力玩具. 打开 PowerToys 设置,确保 PowerRename 已启用并集成到 shell。

图片:

选择文件,右键单击并单击 PowerRename。将显示一个窗口。输入要搜索的条件-和要替换的字符串-。或者,选择使用正则表达式。预览将显示文件的新名称。单击确定以重命名它们。

图片:

答案3

因为搜索如何在 Linux 中执行此操作将我带到了这个页面,所以我将把这个页面留在这里,以便遇到同样情况的人可以参考。

for f in *.py; do mv "$f" "${f//-/_}"; done

相关内容