更改文件名时将多个文件复制到同一目录
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 进行测试,然后在您满意时将其删除,它会给您想要的。
我需要复制一系列看起来像
的文件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 进行测试,然后在您满意时将其删除,它会给您想要的。