我有一个充满来自不同数据库的SQL备份的文件夹。我需要从每个数据库中隔离上次修改的内容,然后删除其余的内容。
我可以找到所有这些文件的最后一个修改,然后删除其余的,但这会删除其他2个DB的最后一个备份。
$files = Get-ChildItem -Path $path -Recurse |
Where-Object {-not $_.PsIsContainer}
$keep = 1
if ($files.Count -gt $keep) {
$files | Sort-Object CreationTime |
Select-Object -First ($files.Count - $keep) |
Remove-Item -Force
}
这只会保留最新消息,并删除其余的消息。
如果我有
db1.bak db1.bak db1.bak db2.bak db2.bak db2.bak db3.bak db3.bak db3.bak
我如何保留每个的最后修改,然后删除其余的?
答案 0 :(得分:0)
按名称对文件分组,从每个组中跳过最新文件,然后删除其余文件。
Get-ChildItem -Path $path -Recurse |
Where-Object {-not $_.PsIsContainer}
Group-Object Name |
ForEach-Object {
$_.Group |
Sort-Object LastWriteTime -Desc |
Select-Object -Skip 1 |
Remove-Item -Force
}