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

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

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

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"}

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

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

答案1

尝试以下 cmdlet:

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

相关内容