Hvordan få størrelsen på en katalog i Linux

Hvordan få størrelsen på en katalog i Linux
Å kjenne størrelsen på en katalog i Linux er ikke så grei som det høres ut. Kommandoen “LS -S” vil liste opp filene og underkatalogene med størrelsene sine. Størrelsene (omtrent 4096 byte) gitt for katalogene er imidlertid ikke diskbruk. Størrelsen som er sett for en katalog er størrelsen på katalogens metadata.

Metadata er data om data. Den tilsynelatende størrelsen er størrelsen på dataene som betyr noe for den vanlige brukeren av datamaskinen. Innholdet (teksten) på brukerens bokstaver, bilder, videoer osv., utgjør den tilsynelatende størrelsen. Disse dataene holdes ikke vilkårlig på datamaskinen. Dataene i tilsynelatende størrelse må oppbevares på en kontroll måte. Det må være identifiserbart. Det må være komplett. Det er andre krav til det. Noen ekstra data er nødvendig for å oppnå disse ekstra kravene, og disse ekstra dataene er metadataene.

Husk at det bare er en katalog i et volum. Resten er underkataloger. Rotkatalogen gir opphav til underkataloger, som gir andre underkataloger som går ned. Underkataloger kalles imidlertid ganske enkelt kataloger. Og så, det er bare ett katalogtre.

Så "ls -s" er ikke nyttig for å oppnå størrelsen på en katalog. Hvilken kommando da er nyttig? - DU -kommandoen. “Du” står for diskbruk. Den skriver ut diskbruken til katalogen.

Denne artikkelen forklarer de forskjellige funksjonene i DU-kommandoen i Linux, som gir de forskjellige programmerermåtene å kjenne størrelsene på katalogene og deres underkataloger. Bash er skallet som brukes til kodeprøvene i denne artikkelen.

Artikkelinnhold

  • du uten alternativ eller argument
  • Størrelse på andre kataloger
  • tilsynelatende størrelse
  • Sudo -kommandoen
  • Unntatt oppføringer etter størrelse
  • ekskluder = mønster
  • Konklusjon

du uten alternativ eller argument

Den gjeldende arbeidskatalogen er katalogen brukeren jobber for øyeblikket i. Ledeteksten viser normalt gjeldende arbeidskatalog. Å skrive DU uten noe alternativ og argument, slik:

du

og deretter trykke på Enter-tasten, viser diskbruken for alle underkatalogene i den gjeldende arbeidskatalogen. Den vil vise denne informasjonen for undertreet til den gjeldende arbeidskatalogen. En prikk på displayet representerer den gjeldende arbeidskatalogen.

Hver vei til undertræren er representert i en linje, på skjermen. Hver linje begynner med størrelsen på katalogen (som er etternavn i banen). Displayet kan være noe sånt som:

8 ./dir1/dir2/dir3/dir4
12 ./dir1/dir2/dir3
16 ./dir1/dir2
20 ./dir1

Legg merke til at det ikke er klart om størrelsen er i byte eller kilobyte eller megabyte eller gigabyte. Kilobyte av symbol, k betyr 1024 byte; Megabyte med symbol, M betyr 1.048.576 byte; Gigabyte med symbol, G betyr 1.073.741.824 byte. For at multiplene skal indikeres, bør alternativet -H (bryter) brukes, som følger:

du -h

Displayet vil da se ut som det:

8.0k ./dir1/dir2/dir3/dir4
12k ./dir1/dir2/dir3
16k ./dir1/dir2
20k ./dir1

Når -h -alternativet brukes, sies størrelsene å være i en lesbar form.

Merk: Med alternativet -All, vil DU -kommandoen også gi diskbruk for filer; Imidlertid vil diskbruk for filer ikke bli adressert i denne artikkelen.

Størrelse på andre kataloger

En typisk absolutt bane for et Linux -volum er som følger:

/Hjem/John/Dirone/Dirtwo/Dirthree/Dirfour

Den første / er rotkatalogen. Denne katalogen har umiddelbare underkataloger, inkludert hjemmekatalogen. Hjemmekatalogen har katalogen til brukeren. Hvis brukerens navn er John, kan han navngi brukerens katalog, John. Brukerens katalog er identifisert av ~. Så brukeren kan bruke kommandoen “CD ~” for å nå katalogen sin fra en hvilken som helst katalog. Dirone er en katalog opprettet av brukeren. Brukeren kan også lage andre kataloger på dette nivået. Dirtwo, Dirthree og Dirfour er underkataloger til sine tidligere kataloger, opprettet av brukeren.

Brukeren kan kjenne størrelsen på en hvilken som helst annen katalog og dens underkataloger (sub-tree) fra enhver katalog, og omgå den absolutte banen som et argument. For eksempel, hvis det er behov for diskbruk,

/Hjem/John/Dirone/Dirtwo

Da ville kommandoen være:

Du -H/Home/John/Dirone/Dirtwo

eller

du -h ~/dirone/Dirtwo

hvor ~ representerer brukerens katalog.

For å bruke en relativ bane, må brukeren allerede være i den tilsvarende overordnet katalog. For eksempel, hvis ledeteksten vises,

John@vert: ~/dirone $

Betydning av brukeren er på katalogen,/Home/John/Dirone, da vil følgende kommando gi samme resultat som kommandoen ovenfor:

du -h skittwo

Stiene vil fortsatt være relative. For å vise den samme informasjonen for den gjeldende katalogen, bruk ingen argumenter eller bruk prikken.

Denne ordningen kan brukes til å få størrelsen på bare en katalog, den siste på en bane (før av banen). Det er mulig å få størrelsen på en katalog midt i en sti - se “Ekskluder = mønster” nedenfor.

Storslått total

En stor total størrelse på alle katalogene som er involvert kan produseres. For ovennevnte situasjon ville kommandoen være:

du -h - -total

tilsynelatende størrelse

Den tilsynelatende størrelsen er vanligvis mindre enn diskbruken. I noen situasjoner er imidlertid den tilsynelatende størrelsen større enn diskbruken; Årsak - se senere. Kommandoen for å få de tilsynelatende størrelsene for den relative banen ovenfor ville være:

du -h -Apparent -size Dirtwo

Maksimal dybde

Med -Max -Dypth = 0 skriver DU på størrelsen på bare den gjeldende arbeidskatalogen; Med du-max-dybde = 1, skriver du ut størrelsen på den gjeldende arbeidskatalogen og størrelsene på alle underkatalogene på første nivå; Med -Max-Dypth = 2 skriver DU størrelsen på den gjeldende arbeidskatalogen og størrelsene på alle underkatalogene på første nivå, og av alle underkatalogene for andre nivå; Med -Max-Dypth = 3 skriver DU størrelsen på den gjeldende arbeidskatalogen og alle dens første nivå underkataloger, og alle underkatalogene på andre nivå, og alle underkatalogene på tredje nivå; Dette fortsetter med økende verdi av maks-dybde. Et eksempel på bruken er:

du -h - -max -dybde = 2

Sudo -kommandoen

En av katalogene med sine egne underkataloger i rotkatalogen er var. Hvis brukeren typer

du -h /var

Og presser Enter, vil han innse at tillatelse nektes for noen kataloger. Det vil si at han ikke kan vite størrelsene på noen kataloger. Tillatelsen nektes fordi brukeren ikke er superbrukeren. Superbrukeren har privilegiet å se størrelsene (diskbruken) til disse katalogene. Så for at brukeren skal skaffe seg dette privilegiet, må han bruke Sudo -kommandoen som følger:

sudo du -h /var

Hvis skallet ber brukeren om passordet sitt, må brukeren skrive inn passordet og trykke Enter. Med Sudo -kommandoen kan den vanlige brukeren (programmerer) se størrelsene på alle kataloger i VAR -katalogen og lignende kataloger.

Unntatt oppføringer etter størrelse

Alternativet "-Threshold = størrelse" tillater ikke oppføringskataloger med størrelser mindre enn størrelse. For banen,

/Hjem/John/Dirone/Dirtwo/Dirthree/Dirfour

med ledeteksten til “John@Host: ~ $,” da

du -h -Threshold = 12K Dirone

der 12k betyr 12 kilobyte, vil ikke vise linjen for noen katalog hvis diskbruk er mindre enn 12K.

-ekskluder = mønster

Dette alternativet og verdien kan utelate kataloglinjer som brukeren ikke vil ha i oppføringen.

For å utelate linjen for den siste katalogen, Dirfour of the Path

/Hjem/John/Dirone/Dirtwo/Dirthree/Dirfour

Kommandoen skal være:

du -h -exclude = dirone/Dirtwo/Dirthree/Dirfour Dirone

Resultatet vil være noe sånt som,

4.0K Dirone/Dirtwo/Dirthree
8.0K Dirone/Dirtwo
12K Dirone

Merk: Størrelsene har ikke inkludert størrelsen på den siste nivåkatalogen (Dirfour) på banen.

Å bare ha størrelsene på de øvre dybdekatalogene og deres undertrær, har ikke de nedre dybdekatalogene i alternativet. Så med kommandoen,

du -h -exclude = dirone/Dirtwo/Dirthree Dirone
Utgangen vil være noe sånt som,
4.0K Dirone/Dirtwo
8k dirone

Merk: Størrelsene har ekskludert størrelsene på de nedre spakskatalogene til treet.

Tenk på igjen, den absolutte lenken,

/Hjem/John/Dirone/Dirtwo/Dirthree/Dirfour

Følgende kommando vil skaffe diskbruk av bare Dirtwo -katalogen, som er en katalog på banen. Kommandoen er:

du -h -exclude =/home/john/dirone/Dirtwo/*/Home/John/Dirone/Dirtwo

Argumentet har alle de foregående katalogene ned til den aktuelle aktuelle. Verdien av å ekskludere har alle de foregående katalogene, som slutter med *, like etter den aktuelle aktuelle. * betyr alle underkataloger på det nivået (og deres undertrær). Resultatet vil være noe sånt som,

5.0k/Home/John/Dirone/Dirtwo

Konklusjon

Prøver å kjenne størrelsen på en katalog med kommandoen “LS -S” er misvisende. Med det er det bare oppnådd metadata for katalogen. For å kjenne diskbruken til en katalog, bør DU -kommandoen brukes. Når du brukes med -h -alternativet, er størrelsene på katalogene lesbare. Den tilsynelatende størrelsen kan oppnås ved hjelp av alternativet tilsynelatende størrelse. Uten noe alternativ og argument, viser DU -kommandoen bare størrelsene på alle underkatalogene i den gjeldende katalogen, inkludert den gjeldende katalogen. Argumentet til “du” er banen, som kan begynne fra roten. Alternativer og noen av verdiene deres bestemmer nøyaktig hvilke kataloger som blir adressert. Sudo -kommandoen gir de vanlige brukerens superbrukerrettigheter som standard.