Supermicro X9SRI-F | Xeon E5-2690 v2 | 128GB 1600MHz RDIMM | Dell Perc H200 (9211-8i IT) | Windows Server 2016 DataCenter med Hyper-V
Hjälp med ett powershell script?
Visa signatur
@Calby: Det här är ett bra scenario för en priority queue, som kan hålla ordning på de äldsta filerna som tillsammans tar upp en viss storlek; på så sätt räcker det att du scannar filsystemet en gång, samtidigt som du inte behöver minnas alla filer. Tyvärr tror jag inte att .NET tillhandahåller någon färdig implementation, utan du får leta upp eller skriva en (i t.ex. C#) som kan användas via PowerShell. Handlar det om ett begränsat antal filer så kanske det räcker att lista alla, sortera efter ålder och, välja de äldsta still dess att summan av deras storlekar är större än eller lika med målet:
$size = 0
$target = 0
$files = @()
Get-ChildItem -Path "/path/to/search" -Recurse |
?{ -Not $_.PSIsContainer } |
Sort-Object CreationTime |
%{ $files += $_ }
foreach($file in $files)
{
if($size -ge $target)
{
break
}
Remove-Item $file.FullName -WhatIf
$size += $file.Length
}
Annars, och om det är ett alternativ att använda t.ex. Python istället så kan du använda heapq. Här är ett snabbt exempel som skriver ut de äldsta filerna som tillsammans tar upp minst en viss storlek:
from os import walk
from os.path import join, realpath, getctime, getsize
from heapq import heappop, heappush
# Helper
def all_files(path):
for dir, _, files in walk(realpath(path)):
for file in files:
yield join(dir, file)
def oldest_files(path, target):
heap = []
size = 0
# För varje fil i mappen...
for file in all_files(path):
# Skjut in den i heapen och öka på storleken...
heappush(heap, (-getctime(file), getsize(file), file))
size += getsize(file)
# Medans vi är över målstorleken ...
while size > target:
top = heap[0]
# ... och det är möjligt att slänga den nyaste
# filen utan att gå under gränsen igen,
# gör det, och uppdatera storleksräknaren:
if top[1] < size - target:
heappop(heap)
size -= top[1]
# ... annars är det inte möjligt att slänga
# något utan att riskera att gå under gränsen
# för vad vi måste frigöra, och vi avbryter
# för att se om det finns fler filer att
# överväga:
else:
break
for *_, file in heap:
yield file
for file in oldest_files("/path/to/search", 10 * 1024 * 1024):
print(file)
Exempel i Python
Visa signatur
Abstractions all the way down.
Citera flera
Citera
Hårdvara
- Idag Nu stiger hårddiskpriserna med uppemot 10 procent 9
- Idag Analytiker: Apple har överskattat intresset för Vision Pro 47
- Igår AMD, Nvidia och Intel – vad är det för skillnad mellan grafikkortstillverkarna? 25
- Igår Testpilot: MSI MPG 271QRX - Färgsprakande OLED i 360 Hz 13
- 23 / 4 Meta öppnar upp Quests OS – vill bli VR-världens Android 12
Mjukvara
Datorkomponenter
Ljud, bild och kommunikation
- Airtec Pro Type1 – batteridrivet alternativ till tryckluft på burk0
- Nintendo-innehåll tas bort från Garrys Mod10
- Microsoft rullar ut Startmenyreklam till alla54
- Amazons Fallout-serie regisseras av Jonathan Nolan (Inte den Nolan, men hans brorsa)331
- Battlefield 20423725
- Vart får man tag på halvantika processorer nuförtiden?19
- Köpa mesh1
- LegoClockers - Samlingstråd för allt med Lego611
- Rabbel.se - Ett dagligt ordspel710
- Grafikkort till ryzen 5600G / pcie 3.0. RX 6600?4
- Säljes Gigabyte Aorus GTX 1060 6GB
- Säljes Diverse - MX Keys Tangentbord, ZenDAC V2, Fidelio Hörlurar, Handkontroll
- Säljes Logitech G915 Lightspeed trådlöst tangentbord GL Tactile & Logitech G Pro Wireless
- Bytes Testkörd Tp-Link Omada 605ER
- Säljes Higround BLACKICE Keycaps 65% Nordic
- Köpes Qnap TL-D800S / TL-D1600S / TL-D800C
- Säljes 2 set med Corsair 16GB (2x8GB) DDR4 3600MHz CL18 Vengeance LPX AMD
- Köpes 5800x3d / 5700x3d
- Säljes iMac Pro 2017
- Köpes Köpes AM4 moderkort + Minnen.
- Airtec Pro Type1 – batteridrivet alternativ till tryckluft på burk1
- Nintendo-innehåll tas bort från Garrys Mod10
- Nu stiger hårddiskpriserna med uppemot 10 procent9
- Quiz: Vad kan du om Inet?55
- Analytiker: Apple har överskattat intresset för Vision Pro47
- Microsoft rullar ut Startmenyreklam till alla54
- EU röstar igenom ”rätten att reparera”51
- Viaplay sätter ner foten mot delade konton55
- AMD, Nvidia och Intel – vad är det för skillnad mellan grafikkortstillverkarna?25
- Systembolaget varnar: Dryckesbrist efter hackerattack100