Prestal som plytvať miestom na disku, keď som sa naučil tento jeden trik v PowerShelli
Duplikované súbory sú jednými z najtajnejších a najproblematickejších požieračov miesta na disku. Sú ľahko nahromaditeľné a ťažko odstrániteľné, ak neviete, kde sa nachádzajú originály alebo koľko kópií môžete mať. Aby toho nebolo málo, vstavané nástroje systému Windows na obnovu úložiska nefungujú práve skvele pri hľadaní a odstraňovaní duplikátov.
Iste, možno budete schopní spustiť čistenie disku a získať späť nejaké miesto, ale to neznamená, že sa zbavíte duplicitných súborov, ktoré zbytočne zaberajú priestor na vašich diskoch. Našťastie existuje jeden príkaz PowerShell, ktorý vykoná všetku ťažkú prácu a nájde všetky tie zákerne skryté duplicity na vašom počítači.
Tento jednovetný príkaz zisťuje, čo vám žerie úložisko
Okamžite nájdite svoje duplicitné položky
V PowerShelli nie sú žiadne vstavané funkcie na hľadanie duplicit. Môžete však zlúčiť niekoľko príkazov do jednej jednoduché pipeline, ktorá funguje v PowerShelli. Stačí spustiť nasledujúci príkaz:
Get-ChildItem -Path "Directory/Path" -Recurse -File | Get-FileHash | Group-Object Hash | Where-Object Count -gt 1 | ForEach-Object { $_.Group }
Pokým je PowerShell schopný získať hash súboru pomocou príkazu Get-FileHash, môže porovnávať súbory v určenom adresári a nájsť akékoľvek duplicitné súbory. Všetko ostatné je len prepojenie, ktoré spája objavovanie súborov s hashovaním a zoskupovaním tak, aby sa ako výsledok zobrazovali iba skutočné duplicity.
Čo táto príkaz vlastne robí
Pár príkazov, jednoduchý pipeline
Príkaz začína Get-ChildItem -Recurse -File, ktorý prehľadáva strom adresárov a vracia každý súbor ako objekt, vrátane tých, ktoré sú uložené v podadresároch. Tieto objektové súbory sú potom odoslané do Get-FileHash, ktorý vypočíta hash obsahu. Hash obsahu je možné považovať za jedinečný odtlačok prsta každého súboru, ktorý sa potom používa na hľadanie duplicitných súborov na základe obsahu súboru, nie jeho názvu.
Ďalej Group-Objet Hash hovorí PowerShellu, aby zoskupil všetky tieto výsledky hash podľa ich vlastnosti Hash, čím efektívne zoskupí súbory s rovnakým obsahom dokopy. V tomto bode má pipeline skupiny, kde sa niektoré hashe objavujú raz a iné viackrát, čo naznačuje, že boli nájdené duplikáty.
Potom, Where-Object Count -gt 1 odfiltruje všetky skupiny, ktoré obsahujú len jeden súbor. Nakoniec, ForEach-Object {$_.Group} rozbalí skupiny a zobrazí iba samotné súbory pre každý duplicitný hash, takže to, čo vidíte na obrazovke, je zoznam súborových objektov zobrazujúcich vaše duplikáty. Teraz môžete buď prečítať celé cesty, poslať ich do Select-Object na vytlačenie ako formátovaný zoznam, alebo ich exportovať ako CSV na neskoršie preskúmanie.
Prečo nástroje GUI nestačia
Používateľské rozhrania sú pekné, neustále pripomínanie, aby ste si kúpili licenciu, však nie.
Na internete je k dispozícii množstvo grafických nástrojov na vyhľadávanie duplicitných súborov pre Windows. A vo väčšine prípadov sú vhodné na jednorazové čistenie. Treba však povedať, že často obsahujú reklamy alebo majú vážne obmedzenia, kým nezaplatíte za licenciu alebo predplatné.
Na porovnanie, tento PowerShell príkaz používa len vstavané nástroje, je bezpečný na spustenie, úplne priehľadný a môže byť zabudovaný do skriptov pre automatizáciu. Pretože ide len o reťazec cmdletov (ľahké, špecializované príkazy na vykonávanie jedinečných úloh správy systému), môže byť ďalej prispôsobený. Napríklad, môžete pridať -Filter *.PDF na vyhľadávanie iba PDF súborov alebo spraviť výstup čitateľnejším.
Ďalšou výhodou je, že zostávate v kontrole nad údajmi a ich vymazaním. Vyššie uvedený jednoduchý jednoradkový príkaz iba nájde duplikáty, nevymaže ich, čím sa znižuje riziko náhodného vymazania niečoho dôležitého. Ak ovládate PowerShell, môžete potrubie rozšíriť tak, aby automaticky vymazalo všetky duplikáty súboru pridaním Select-Object -Skip 1 | Remove-Item.
Nepomáhaj spomaliť svoj počítač
Skenujte múdro, zostaňte v bezpečí
Skenovanie celého disku pri hashnutí súborov bude náročná úloha na zdroje. Príkaz Get-FileHash musí prečítať každý súbor, aby vypočítal jeho hash, čo znamená, že spustenie na veľkom disku plnom hier, dokumentov a médií, medzi inými dátami, bude trvať čas a vytvorí veľké množstvo diskovej aktivity. Ak si nie ste opatrní, je to tiež veľmi rýchly spôsob, ako spôsobiť príliš veľa zápisov na SSD, čo môže skrátiť jeho životnosť.
Namiesto toho, aby ste smerovali príkaz na celý disk, odporúčam vám skôr prehľadať menšie priečinky. Zameranie sa na časté miesta, kde by sa mohli nachádzať duplikáty, ako sú priečinky Sťahovania alebo Dokumenty vo Windows alebo vaše archívy fotiek, ušetrí veľa času a námahy.
Pokiaľ ide o bezpečnosť, vyhnite sa spúšťaniu akýchkoľvek operácií vymazania v rovnakom príkaze, ktorý používate na vyhľadávanie duplicitných záznamov, aspoň pokiaľ ešte experimentujete so svojím pipeline. Je lepšie najprv zachytiť výstup do premennej a skontrolovať ho, aby ste sa uistili, že dostávate očakávané výsledky. Keď si budete istí, že zhody sú skutočne nadbytočné, môžete sa rozhodnúť, či ich odstránite manuálne alebo spustíte skript na vymazanie.
Prevezmite kontrolu nad svojím úložiskom
Prestaňte hádať, začnite riadiť
Akonáhle začnete používať tento príkaz, rýchlo sa stane jedným z tých PowerShell príkazov, ktoré dokážu opraviť väčšinu vašich problémov vo Windows. Kedykoľvek sa priečinok začne zdať preplnený, spustite skenovanie a uvoľnite miesto, ktoré by ste inak museli manuálne kontrolovať a overovať hodiny, všetko bez potreby ďalšieho nástroja na čistenie.
Bude existovať určitá počiatočná kognitívna záťaž pri analýze pipeline, ale akonáhle to pochopíte, stane sa to jednoduchým, opakovateľným spôsobom, ako zvládnuť problémy s úložiskom na vašom počítači. Pamätajte, že si nepamätáte magickú formulku, skôr sa učíte vzorec: získať položky, hashovať ich, zoskupiť ich, filtrovať a konať podľa výsledku.








