我有一个文件夹,里面有很多文件。我想要的是替换每个文件的第一个匹配字符。例如,我有
aabbc.txt aaabbxx.txt aacbbbv.txt
我想用“z”替换第一个“b”,结果是
aazbc.txt aaazbxx.txt aaczbbv.txt
所以只有第一场比赛会被替换
Dir | Rename-Item -NewName { $_.name -replace "b","a" }
但它会替换文件名中的所有“b”。
这样的方法应该有效:
Dir | Rename-Item -NewName { $_.name -replace '^(.*?)b', '$1z' }
诀窍是包括最短的匹配,直到第一个b( (.*?) )在匹配模式中,并通过将其替换为自身来在替换中保留它( $1 ).
(.*?)
$1