更改文件名时将多个文件复制到同一目录

Copying multiple files into same directory while changing filename

我需要复制一系列看起来像

的文件
foo.bar
foo.baz
foo.boo
...

进入同一导演,但将 foo 更改为 moo

moo.bar
moo.baz
moo.boo
...

但我不确定如何在一个命令中复制和重命名多个文件。类似于

cp 'foo.*' . | ren foo.* moo.*

除了这没有语法意义。我意识到我可以将它放在一个临时目录中,在那里重命名然后将其移回,但我很好奇是否有 1 行方法可以做到这一点。

您可以通过以下方式重命名多个文件:

Get-ChildItem -Filter "foo*" | {$_.name -replace 'foo','moo' }

有关详细信息,请参阅此 link

并且您可以使用分号在 powershell 中链接命令。

编辑: 我目前无法访问 Windows 机器来测试它,但我想以下应该可行:

ls 'foo*' | % {$newName = $_.name -replace 'foo','moo'; cp $_ $newName ; }

你可以这样做:

Get-ChildItem  -Filter "foo*" | % {
   Copy-Item  $_.Name ($_.Name -replace 'foo', 'moo' ) -WhatIf 
}

留下 -whatif 进行测试,然后在您满意时将其删除,它会给您想要的。