Hoe u snel alle bestanden met specifieke namen verwijdert

Elke computer- of tabletgebruiker verwijdert van tijd tot tijd bestanden grote maten . Meestal zijn dit videobestanden, audiobestanden, afbeeldingen, archieven, inclusief schijfkopieën, programma-installatieprogramma's, enz.

Grote bestanden stapelen zich geleidelijk op op een harde schijf of flashdrive, waardoor hun volume afneemt.

Overigens kopen mensen steeds vaker computers in online winkels. In Oekraïne is Rozetka de leider in dit segment; je kunt een computer kopen in Minsk op de Buy.Here-website.

Computers maken mensen tot op zekere hoogte lui. Gingen mensen vroeger veel vaker naar de bioscoop, nu downloaden de meeste mensen de gewenste film naar hun computer of bekijken deze online. Zelfs als je een computer met een terabyte hebt gekocht harde schijf voor video, muziek, foto's of games - dit betekent niet dat deze hoeveelheid geheugen voldoende zal zijn voor uw computer "tot de dood".

Het uur komt dat u een bestand wilt opslaan, maar er geen ruimte voor is. Het is op zulke momenten dat de meeste gebruikers de hele stapel bestanden en mappen doorzoeken om oude en zelden gebruikte grote bestanden te vinden.

Grote bestanden verwijderen met WinDirStat

Het hele bovenstaande proces kan worden versneld en geautomatiseerd met behulp van een klein hulpprogramma genaamd WinDirStat. U kunt dit programma downloaden via de link http://windirstat.info/download.html

Het hulpprogramma WinDirStat gebruiken

Installeer WinDirStat. Lanceer het. Het hulpprogramma scant de schijf die u hebt geselecteerd en geeft u een lijst met mappen (bestanden) en daaronder fragmenteerbare schijfstructuur. Elk vierkant is een bestand.

Klik op de grote vierkanten en het programma toont u grote bestanden. Bekijk welke pijnloos verwijderd kunnen worden. U kunt bestanden rechtstreeks in WinDirStat verwijderen.

Maak kennis met de mogelijkheden van dit programma. Het is heel gemakkelijk te gebruiken. Zelfs een schooljongen kan het bedenken.

Een betoverende puntje op de i als het gaat om het verwijderen van bestanden uit een overvolle map.

Ik heb het artikel gelezen en was zeer verrast. Zit het echt niet in de standaard Linux-toolkit? eenvoudige middelen om met volledige mappen te werken, moet je je toevlucht nemen tot methoden op laag niveau, zoals het rechtstreeks aanroepen van getdents().

Voor degenen die het probleem niet kennen: korte beschrijving: als u per ongeluk in dezelfde map hebt aangemaakt grote hoeveelheid bestanden zonder hiërarchie - d.w.z. van de 5 miljoen bestanden die in één enkele platte directory liggen, zal het niet mogelijk zijn om ze snel te verwijderen. Bovendien kunnen niet alle hulpprogramma's in Linux dit in principe doen - ze zullen de processor/HDD zwaar belasten of veel geheugen in beslag nemen.

Dus heb ik wat tijd gereserveerd, een testsite opgezet en het geprobeerd. verschillende middelen, zowel gesuggereerd in de reacties als gevonden in verschillende artikelen en die van jou.

Voorbereiding

Omdat u geen overvolle map op uw harde schijf van uw werkcomputer wilt maken en deze vervolgens wilt verwijderen, laten we een virtueel bestandssysteem maken in apart bestand en monteer deze via een lusapparaat. Gelukkig is dit eenvoudig op Linux.

Maak een leeg bestand van 200 GB groot
#!python f = open("sparse", "w") f.seek(1024 * 1024 * 1024 * 200) f.write("\0")

Veel mensen adviseren hiervoor het hulpprogramma dd te gebruiken, bijvoorbeeld dd if=/dev/zero of=disk-image bs=1M count=1M , maar dit werkt veel langzamer en het resultaat is, zoals ik het begrijp, hetzelfde.

Formatteer het bestand in ext4 en mount het als bestandssysteem
mkfs -t ext4 -q sparse # TODO: minder FS-grootte, maar wijzig -N optie sudo mount sparse /mnt mkdir /mnt/test_dir
Helaas leerde ik na het experimenteren over de optie -N van de opdracht mkfs.ext4. Hiermee kunt u de limiet op het aantal inodes op FS verhogen zonder de grootte van het afbeeldingsbestand te vergroten. Maar op een andere manier, standaard instellingen- dichter bij de reële omstandigheden.

Maak een set lege bestanden(werkt enkele uren)
#!python voor i in xrange(0, 13107300): f = open("/mnt/test_dir/(0)_(0)_(0)_(0)".format(i), "w") f .close() if i % 10000 == 0: print i
Trouwens, als de bestanden in het begin vrij snel werden gemaakt, werden de volgende steeds langzamer toegevoegd, verschenen er willekeurige pauzes en nam het geheugengebruik van de kernel toe. Opbergen dus groot nummer bestanden in een platte map plaatsen is op zichzelf een slecht idee.

We controleren of alle inodes op de FS uitgeput zijn.
$ df -i /dev/loop0 13107200 13107200 38517 100% /mnt
Bestandsgrootte map ~360 MB
$ ls -lh /mnt/ drwxrwxr-x 2 serie serie 358M nov. 1 03:11 test_dir
Laten we nu op verschillende manieren proberen deze map met al zijn inhoud te verwijderen.

Testen

Na elke test resetten we de cache bestandssysteem
sudo sh -c "sync && echo 1 > /proc/sys/vm/drop_caches"
om niet snel al het geheugen in beslag te nemen en de verwijderingssnelheid onder dezelfde omstandigheden te vergelijken.

Verwijderen via rm -r

$ rm -r /mnt/test_dir/
Onder strace roept het getdents() meerdere keren achter elkaar aan (!!!), roept vervolgens unlinkat() vaak aan, enzovoort, in een lus. Genomen 30 MB RAM groeit niet.
Verwijdert inhoud met succes.
iotop 7664 be/4 serie 72,70 M/s 0,00 B/s 0,00 % 93,15 % rm -r /mnt/test_dir/ 5919 be/0 root 80,77 M/s 16,48 M/s 0,00 % 80,68 %
Die. Het is heel normaal om overvolle mappen te verwijderen met rm -r /pad/naar/map.

Verwijdering via rm ./*

$ rm /mnt/test_dir/*
Lanceert een child-shell-proces dat is uitgegroeid tot 600 MB
Het is duidelijk dat de glob met een sterretje door de shell zelf wordt verwerkt, in het geheugen wordt verzameld en aan het rm-commando wordt doorgegeven nadat de hele map is gelezen.

Verwijdering via find -exec

$ vind /mnt/test_dir/ -type f -exec rm -v () \;
Onder strace roept het alleen getdents() aan. het zoekproces is uitgegroeid tot 600 MB, genageld door ^C. Ik heb niets verwijderd.
find werkt hetzelfde als * in de shell - het bouwt eerst volle lijst in gedachten.

Verwijderen via zoeken - verwijderen

$ find /mnt/test_dir/ -type f -delete
Opgegroeid tot 600 MB, genageld door ^C. Ik heb niets verwijderd.
Hetzelfde als het vorige commando. En dit is buitengewoon verrassend! Ik heb vanaf het begin mijn hoop gevestigd op dit team.

Verwijderen via ls -f en xargs

$ cd /mnt/test_dir/ ; ls-f. | xargs -n 100 rm
de optie -f vertelt u dat u de lijst met bestanden niet mag sorteren.
Creëert de volgende proceshiërarchie:
| -ls212Kb | - xargs 108Kb | - rm 130Kb # rm's pid verandert voortdurend
Succesvol verwijderd.
iotop # springt veel 5919 be/0 root 5,87 M/s 6,28 M/s 0,00% 89,15%
In deze situatie gedraagt ​​ls -f zich adequater dan find en verzamelt niet onnodig een lijst met bestanden in het geheugen. ls zonder parameters (zoals find) - leest de volledige lijst met bestanden in het geheugen. Uiteraard voor sorteerdoeleinden. Maar deze methode is slecht omdat deze voortdurend rm aanroept, wat extra overhead creëert.
Dit leidt tot een andere manier: je kunt de uitvoer van ls -f omleiden naar een bestand en vervolgens de inhoud van de map verwijderen met behulp van deze lijst.

Verwijderen via perl readdir

$ perl -e "chdir "/mnt/test_dir/" or die; opendir D, "."; while ($n = readdir D) ( ontkoppel $n )" (nam)
380 KB het geheugen groeit niet.
Succesvol verwijderd.
iotop 7591 be/4 serie 13,74 M/s 0,00 B/s 0,00% 98,95% perl -e chdi... 5919 be/0 root 11,18 M/s 1438,88 K/s 0,00% 93,85%
Het blijkt dat het gebruik van readdir heel goed mogelijk is?

Verwijdering via C-programma readdir + ontkoppelen

//bestand: cleandir.c #include #erbij betrekken #erbij betrekken int main(int argc, char *argv) ( struct dirent *entry; DIR *dp; chdir("/mnt/test_dir"); dp = opendir("."); while((entry = leesmap(dp)) ! = NULL) ( if (strcmp(entry->d_name, ".") && strcmp(entry->d_name, ".."))( unlink(entry->d_name); // misschien unlinkat ? ) ) )
$ gcc -o cleandir cleandir.c
$./schoondir
Onder strace roept het getdents() één keer aan, vervolgens unlink() vele malen, enzovoort, in een lus. Genomen 128 KB het geheugen groeit niet.
Succesvol verwijderd.
iotop: 7565 be/4 serie 11,70 M/s 0,00 B/s 0,00% 98,88% ./cleandir 5919 be/0 root 12,97 M/s 1079,23 K/s 0,00% 92,42%
Nogmaals, we zijn ervan overtuigd dat het gebruik van readdir heel normaal is, als je de resultaten niet in het geheugen verzamelt, maar bestanden onmiddellijk verwijdert.

conclusies

  • U kunt een combinatie van de functies readdir() + unlink() gebruiken om mappen met miljoenen bestanden te verwijderen.
  • In de praktijk is het beter om rm -r /my/dir/ te gebruiken, omdat het doet iets slimmers: het bouwt eerst een relatief kleine lijst met bestanden in het geheugen op door readdir() verschillende keren aan te roepen, en verwijdert vervolgens bestanden uit die lijst. Hierdoor kunt u lees- en schrijfladingen soepeler afwisselen, wat de verwijdersnelheid verhoogt.
  • Om de systeembelasting te verminderen, gebruiken in combinatie met nice of ionice. Of gebruik scripttalen en plaats kleine sleep() in loops. Genereer een lijst met bestanden via ls -l en geef deze door

In de post "" vertelde ik je hoe je er vanaf kunt komen onnodige bestanden het laden van de server.

We moesten verwijderen gemaakt door WordPress voorbeeld. Maar elk bestand één voor één verwijderen of in groepen selecteren is een lange en vervelende taak. Hoe u alle bestanden in één keer verwijdert uit bepaalde namen? Een geweldige bestandsbeheer Totaal commandant.

Totale commandant – betaald programma, maar zelfs na een maand gratis gebruik De auteurs, die begrijpen dat niet iedereen geld heeft, zijn er niet tegen dat u het blijft gebruiken. Het enige “ongemak” is dat je bij het starten van het programma op een van de drie knoppen moet drukken. We verwijderen dus veel bestanden tegelijk met bepaalde namen met behulp van Totaal Commandant.

We lanceren het programma, vinden de gewenste map op de server (we zullen u vertellen hoe u Total Commander als FTP-manager kunt gebruiken in een van de toekomstige berichten). Om een ​​specifieke groep bestanden te selecteren die aan een bepaalde voorwaarde voldoen, moet u een keuze maken uit het menu: Selectie – Selecteer groep of gebruik " sneltoets"Num+.


Nu moet u een specifiek bestandsmasker opgeven. We maken onze sjabloon - klik op de knop met dezelfde naam.

Omdat alle onnodige voorbeelden de vorm “bestandsnaam–grootte_x_grootte” hebben, geven we het “x”-teken aan als verschil tussen de bestanden. Klik op de knop Opslaan om de sjabloon op te slaan.


We geven onze gemaakte sjabloon een naam en klikken op OK.


Om nu bestanden (Num+) te selecteren, selecteert u de gemaakte sjabloon ("Preview"). Klik OK.

Dat is het eigenlijk: alle bestanden die overeenkomen met de opgegeven sjabloon worden geselecteerd. Nu moet je ze zorgvuldig bekijken om ze niet willekeurig te verwijderen vereiste bestand, met het teken "x". Om de selectie ongedaan te maken, klikt u terwijl u de Ctrl-toets ingedrukt houdt.


Het enige wat u hoeft te doen is op klikken Sleutel verwijderen, bevestig de verwijdering en wacht totdat alle onnodige bestanden die overeenkomen met de gegeven omstandigheden. Bij snelle verwijdering veel bestanden met specifieke namen of specifieke extensie(formaat) kunt u meerdere sjablonen gebruiken.

Als je het hier leuk vond, abonneer je dan op blogupdates! Als dessert raad ik je aan de grappige video 'Een eenvoudige oplossing voor complexe problemen' te bekijken.

IN besturingssysteem Windows dezelfde bewerking kan worden uitgevoerd verschillende manieren. Sommige mensen zijn gewend computerbronnen te beheren met een muis, anderen met een toetsenbord. Om snel een map te verwijderen, hoeft u alleen maar te begrijpen welke methode voor u het gemakkelijkst en handigst is.

Instructies

  • Het merendeel van de bestanden en mappen wordt niet onmiddellijk van de computer verwijderd, maar in de prullenbak geplaatst. Als u een map volledig moet verwijderen, moet een van de volgende acties eindigen met het legen van de Prullenbak.
  • Om bestanden uit de Prullenbak te verwijderen, verplaatst u de muiscursor naar het pictogram "Prullenbak" op het bureaublad, klikt u er met de rechtermuisknop op en selecteert u "Prullenbak legen" in het vervolgkeuzemenu. Bevestig uw acties in het aanvraagvenster. Alternatieve optie: Open het item Prullenbak en selecteer in het paneel typische taken hetzelfde elftal.
  • De map zelf kan worden verwijderd op de volgende manieren. Beweeg uw muiscursor erover onnodige map, klik met de rechtermuisknop op het pictogram en selecteer contextmenu Commando "Verwijderen". Bevestig de handeling in het aanvraagvenster door op de knop “Ja” te klikken. De map wordt in de prullenbak geplaatst.
  • Een andere optie is geschikter als u meerdere mappen tegelijk wilt verwijderen. Terwijl je ingedrukt houdt linker knop selecteer met de muis de mappen die u wilt verwijderen. Herhaal de stappen die in de vorige stap zijn beschreven.
  • Een andere manier om te verwijderen met de muis: verplaats de cursor naar het mappictogram, houd de linkermuisknop ingedrukt en sleep het mappictogram naar het prullenbakpictogram op het bureaublad. Bevestig uw acties in het aanvraagvenster.
  • Als u meer gewend bent om op het toetsenbord te werken, selecteert u de map die u in de prullenbak wilt plaatsen en drukt u op de Delete-toets. Wanneer het systeem u vraagt ​​de bewerking te bevestigen, drukt u op Enter.
  • Mocht u niet meer weten in welke map de map zich bevindt, gebruik dan eerst de component “Zoeken”. Klik op de knop "Start" of Windows-toets, selecteer “Zoeken” in het menu. In het geopende venster stelt u de zoekcriteria in en klikt u op de knop “Zoeken”. Wanneer de map die u zoekt wordt gevonden, verwijdert u deze via een van de hierboven beschreven methoden, rechtstreeks vanuit het zoekmachinevenster.
  • Beoordeel het artikel!

    Bent u ooit geconfronteerd met de taak om een ​​grote hoeveelheid informatie van uw computer te verwijderen? Het heeft zeker minstens één keer stand gehouden, en zo niet, dan zal het zeker gebeuren, geloof me. En iedereen die dit wel eens is tegengekomen, kan je met zekerheid vertellen dat dit echte aambeien zijn.

    Ten slotte groot volume- dit zijn veel bestanden die zich in veel mappen bevinden. Deze bestanden, afzonderlijk, verschillende formaten en maten, sommige zijn mogelijk verborgen, andere beperkte toegang of nog erger - beveiligd met een wachtwoord. En dat is het moment waarop je het neemt verwijder het allemaal op de gebruikelijke manier , dan verschijnen er allerlei vragen, zoals: "Weet je zeker dat je het wilt verwijderen?" of “Deze map heeft een wachtwoord. Weet u zeker dat u deze wilt verwijderen?” Maar het komt voor dat je dit allemaal een jaar geleden hebt 'verborgen en met een wachtwoord hebt beveiligd' en nu herinner je je niets meer, en je hoeft ze niet eens te onthouden, je wilt er gewoon vanaf. Wat als er enkele tientallen of zelfs meer van dergelijke bestanden zijn?

    Deze situatie komt mij bekend voor, aangezien ik veel dingen op mijn computer doe en deze vaak rommelig wordt. Of ik wilde een kungfu-meester worden en 50 gigabyte aan video's downloaden, daarna besloot ik Engels te leren, 80 gigabyte aan verschillende cursussen te downloaden, daarna wilde ik objecten met mijn handen verplaatsen als een Jedi, en wat andere onzin downloaden voor 90 gigabytes. Globaal genomen, grote hoeveelheden informatie verwijderen Ik moet het vaak doen, omdat ik altijd op zoek ben naar iets nieuws :) (en ik ga niet stoppen). de gebruikelijke manier duurt soms enkele uren.

    Maar gelukkig voor mij heb ik een programma gevonden waarmee je dat wel kunt snel veel informatie verwijderen. Dit programma heet Fast Folder Eraser Free.

    Eerst moet je het downloaden, bijvoorbeeld vanaf hier.

    Na het downloaden verschijnt een dergelijk venster. Klik op "Uitvoeren"


    Waarna het gaat standaard installatie wat geen problemen zou moeten opleveren.

    Nadat de installatie is voltooid en u op Klaar (of Voltooien) klikt, verschijnt een dergelijk venster voor u. Klik op Accepteren.



    Daarin moeten we de map selecteren die we willen verwijderen. Om een ​​map te selecteren, klikt u op de knop met de ellips die in de bovenstaande afbeelding rood is omcirkeld.

    Daarna wordt er voor ons een selectievenster geopend.


    De "binnenkant" van de map wordt geopend Dubbelklik, maar als u bij degene komt die u wilt, klikt u er één keer op en klikt u vervolgens op OK.

    Dat is alles, we hebben de map geselecteerd, klik nu op Verwijderen en het verwijderingsproces begint.


    Wauw, ik wilde een foto maken van het proces, maar had geen tijd! Alles werd in minder dan twee seconden verwijderd! Er waren 242 nummers en ze wogen meer dan een gigabyte. Laat me je een voorbeeld geven. Op de gebruikelijke manier, d.w.z. Klik met de rechtermuisknop muis -> Verwijderen, dit alles zou voor mij binnen ongeveer 5 minuten zijn verwijderd! Oordeel dus zelf.

    Dit is zo'n interessant en voor sommigen, zoals ik, ook een noodzakelijk programma.

    Dat is alles. Doei.