如何使用 Powershell 将名称格式为“数字[空格]名称带空格”的所有文件重命名为“数字[连字符]名称带空格”?

Chr*_*isF 1 powershell regex rename wildcards

我有很多名称格式为“数字[空格]名称带空格”或“(数字)[空间]名称带空格”的文件,例如:

23 文件名 23 带空格.txt
(47) 文件名 47 带空格.txt

它们分为几个目录,我需要它们的格式为“带空格的数字连字符名称”,例如:

23-文件名 23 带空格.txt
47-文件名 47 带空格.txt

我对递归查找文件然后在有固定模式时重命名它们的命令没有问题:

get-childitem -filter "*pattern*" -recurse | rename-item -newname {$_.Name -replace "pattern", "new string"}
Run Code Online (Sandbox Code Playgroud)

我正在努力解决正则表达式(?)或通配符需要 a)找到文件,然后,更重要的是,b)进行更新。

只要重命名不处理与模式不匹配的文件,那么 a) 部分就不那么重要了。

Red*_*dio 6

尝试以下 cmdlet:

gci -Recurse -file | where { $_.Name -match '^\(?\d+\)? .+' } | Rename-Item -NewName { $_.Name -replace '^\(?(\d+)\)? (.+)' , '$1-$2' }
Run Code Online (Sandbox Code Playgroud)