替换除角色的最后一个实例以外

时间:2015-12-18 19:41:03

标签: regex powershell

我正在编写一个快速的PowerShell脚本来替换除最后一个实例之外的所有句点。 EG:

hello. this. is a file.name.dochello this is a filename.doc

到目前为止,我从另一篇文章中得到了这个正则表达式,但它不适用于PowerShell:

\.(?=[^.]*\.)

根据http://redpeople.org,它只匹配句点的第一次出现。

编辑: 基本上我需要应用此匹配并替换为具有子目录的目录。到目前为止,我有这个:

Get-ChildItem -Filter "*.*" | ForEach {
    $_.BaseName.Replace('.','') + $_.Extension
}

但它实际上并没有取代这些项目,我认为它不是递归的。

我尝试了一些变化:

Get-Item -Filter "*.*" -Recurse |
    Rename-Item -NewName {$_.BaseName.Replace(".","")}

但我收到错误消息

  

源和目标路径必须不同

1 个答案:

答案 0 :(得分:0)

排除在重命名的基本名称中没有句点的文件:

Get-ChildItem -File -Recurse | Where-Object { $_.BaseName -like '*.*' } |
    Rename-Item -NewName {$_.BaseName.Replace('.', '') + $_.Extension}