Поскольку вы хотите удалить определенную часть каждой строки, я использую скобки захвата, которые позволяют получить каждую часть, захваченную в переменных $ Matches, и поскольку существует только один блок скобок захвата, я использую индекс 1 для доступа к совпадениючасть в переменной $ Matches.
И результат переменной $ Matches выглядит следующим образом
А результат переменной $Matches
выглядит следующим образом
Name Value
---- -----
1 (2018_07_06 06_26_52 UTC)
0 -a---- 10/05/2018 22:15 13938560 11. Feathers (2018_07_06 06_26_52 UTC).mp3
Чтобы выполнить замену, я проверяю, есть ли в переменной $ chain часть, соответствующая шаблону регулярного выражения. Если это так, я выполняю замену
$chain = "-a---- 10/05/2018 22:15 13938560 11. Feathers (2018_07_06 06_26_52 UTC).mp3"
if($chain -match '.+(\s\(.+\)).+'){
$new_filename = $chain.Replace($Matches[1], "")
}
После замены $new_filename
будет содержать
-a---- 10/05/2018 22:15 13938560 11. Feathers.mp3
Поскольку вы получаете список файлов с помощью Get-ChildItem -Recurse
Вы можете сохранить результат в переменной, просмотреть результаты и проверить, есть ли у каждого элемента в массиве обрабатывающая часть, и выполнить замену