替换“123456-name”模式的正则表达式是什么?

时间:2010-09-21 01:55:45

标签: regex powershell

我正在尝试使用PowerShell重命名Windows中的多个文件。 我想重命名替换这种模式:

“123456-the_other_part_of_the_string”。 例如:

409873-doc1.txt
378234-doc2.txt
1230-doc3.txt

基本上我想裁剪数字+' - '东西。

3 个答案:

答案 0 :(得分:2)

$variable -replace "^\d+-", ""

答案 1 :(得分:0)

[0-9]*?-[^.]*

我建议您花些时间学习正则表达式,而不是仅使用SO的答案。您将遇到各种不寻常的文件命名,可能会在现实世界中抛弃您的程序,如果不了解正则表达式,您将无法解决这些问题。

编辑:不确定您是否还要删除“名称”部分。如果没有,请改用:

[0-9]*?-

答案 2 :(得分:0)

Get-ChildItem . *.txt | Where {$_.Name -match '^\d+-(.*)'} | 
                        Rename-Item -NewName {$matches[1]}

或使用别名:

gci . *.txt | ?{$_.Name -match '^\d+-(.*)'} | rni -new {$matches[1]}