Android

Hoe de grootte van een map in Linux te krijgen

Bestanden en mappen in de CLI | Linux

Bestanden en mappen in de CLI | Linux

Inhoudsopgave:

Anonim

Bij het vermelden van de inhoud van een map met behulp van de opdracht ls , is het je misschien opgevallen dat de grootte van de mappen bijna altijd 4096 bytes (4 KB) is. Dat is de grootte van de ruimte op de schijf die wordt gebruikt om de meta-informatie voor de map op te slaan, niet wat het bevat.

De opdracht die u wilt gebruiken om de werkelijke grootte van een map te krijgen, is du , wat staat voor "schijfgebruik".

De grootte van een map verkrijgen

De opdracht du geeft de hoeveelheid bestandsruimte weer die wordt gebruikt door de opgegeven bestanden of mappen. Als het opgegeven pad een map is, geeft du samenvatting van het schijfgebruik van elke submap in die map. Als er geen pad is opgegeven, rapporteert du het schijfgebruik van de huidige werkmap.

Wanneer opgeroepen zonder opties, geeft du het schijfgebruik van de gegeven map en elk van de submappen weer in bytes.

Meestal wilt u de ruimte die door de map in beslag wordt genomen in een voor mensen leesbaar formaat weergeven. Als u bijvoorbeeld de totale grootte van de map /var ophalen, voert u de volgende opdracht uit:

sudo du -sh /var

De uitvoer ziet er ongeveer zo uit:

85G /var

Laten we het commando en zijn argumenten uitleggen:

  • De opdracht begint met sudo omdat de meeste bestanden en mappen in de map /var eigendom zijn van de rootgebruiker en niet leesbaar zijn voor de reguliere gebruikers. Als u sudo , drukt de opdracht du af met "du: kan map niet lezen". s - Geef alleen de totale grootte van de opgegeven map weer, geef geen totalen voor de bestandsgrootte weer voor submappen. h - Afdrukformaten in een voor mensen leesbaar formaat ( h ). /var - Het pad naar de map waarvan u de grootte wilt krijgen.

Wat als u het schijfgebruik van de submappen op het eerste niveau wilt weergeven? Je hebt twee opties. De eerste is om het asterisk-symbool ( * ) te gebruiken, zoals hieronder weergegeven, wat betekent "alles matchen wat niet begint met een punt ( . )". De optie -c vertelt du om een ​​eindtotaal van alle formaten af ​​te drukken:

sudo du -shc /var/*

24K /var/db 4.0K /var/empty 4.0K /var/games 77G /var/lib 4.0K /var/local 0 /var/lock 3.3G /var/log 0 /var/mail 4.0K /var/opt 0 /var/run 196K /var/spool 28K /var/tmp 85G total

Een andere manier om een ​​rapport te krijgen over het schijfgebruik van de submappen op het eerste niveau is door de optie --max-depth gebruiken:

sudo du -h --max-depth=1 /var

77G /var/lib 24K /var/db 4.0K /var/empty 4.0K /var/local 4.0K /var/opt 196K /var/spool 4.0K /var/games 3.3G /var/log 5.0G /var/cache 28K /var/tmp 85G /var 85G total

Standaard geeft de opdracht du de schijfruimte weer die wordt gebruikt door de map of het bestand. Gebruik de --apparent-size om de schijnbare grootte van een map te vinden. De "schijnbare grootte" van een bestand is hoeveel gegevens er eigenlijk in het bestand zitten.

sudo du -sh --apparent-size /var

Wanneer u een map overdraagt ​​via SCP, Rsync. Of SFTP, is de hoeveelheid gegevens die via het netwerk wordt overgedragen, de schijnbare grootte van de bestanden. Dit is de reden waarom de grootte van de ruimte op de schijf die wordt gebruikt op de bron wanneer weergegeven met du (zonder - --apparent-size ) niet hetzelfde is als de grootte op het doel.

De opdracht du kan ook worden gecombineerd met andere opdrachten met pijpen.

Als u bijvoorbeeld de 5 grootste mappen in de map /var wilt afdrukken, /var u de uitvoer van du naar de opdracht sort om de mappen te sorteren op grootte en vervolgens de uitvoer naar de opdracht head die alleen de top 5-mappen afdrukt:

sudo du -h /var/ | sort -rh | head -5

85G /var/ 77G /var/lib 75G /var/lib/libvirt/images 75G /var/lib/libvirt 5.0G /var/cache/pacman/pkg

Conclusie

In Linux kunt u de grootte van een map krijgen met de opdracht du .

du-eindschijf