Для этого вам нужно 2 командлета: Get-ChildItem
и Rename-Item
.
. Это должно работать:
Get-ChildItem -Path 'C:\Blah' -Filter 'bar.txt' -Recurse | ForEach-Object {
Rename-Item -Path $_.FullName -NewName 'neo.txt'
}
Однако, если внутри папки foo
естьбольше подпапок, этот код переименует все файлы с именем bar.txt
(без учета регистра), которые он найдет во всех этих подпапках.
Если вы не хотите идти глубже, чем первая подпапка в C:\Blah
(тот, который называется foo
), вы можете использовать параметр -Depth
в команде следующим образом:
Get-ChildItem -Path 'C:\Blah' -Filter 'bar.txt' -Recurse -Depth 1 | ForEach-Object {
Rename-Item -Path $_.FullName -NewName 'neo.txt'
}