Hvordan for å Få Størrelsen på en Fil eller Mappe i Linux

  • Dave McKay

    @TheGurkha

  • 19 desember 2019, 8:00 am EDT
Fatmawati Achmad Zaenuri/

Når du bruker Linux du – kommandoen, kan du få både den faktiske disk usage og den virkelige størrelsen på en fil eller en katalog. Vi vil forklare hvorfor disse verdiene er ikke det samme.

Faktiske Disk Usage og Sann Størrelse

størrelsen på en fil, og den plassen det ligger på din harddisk, er sjelden det samme., Diskplass er fordelt i blokker. Hvis en fil er mindre enn et kvartal, en hel blokk er fremdeles allokert til det fordi filsystemet ikke har en mindre enhet av eiendom til bruk.

Hvis en fil størrelse er en eksakt multiplum av blokker, den plass den bruker på harddisken må alltid være avrundet opp til nærmeste hele blokken. For eksempel, hvis en fil som er større enn to kvartaler, men mindre enn tre, er det fortsatt tar tre blokker av plass til å lagre det.

Annonsering

To målinger er brukt i forhold til størrelsen på filen., Den første er den faktiske størrelsen på filen, som er antall byte av innhold som gjør opp filen. Den andre er den effektive størrelsen på filen på harddisken. Dette er antall file system blokkerer nødvendig for å lagre denne filen.

Et Eksempel på

La oss se på et enkelt eksempel., Vi vil omdirigere et enkelt tegn i en fil for å lage en liten fil:

echo "1" > geek.txt

Nå, vil vi bruke lang format liste, ls, for å se på filen lengde:

ls -l geek.txt

lengden er den numeriske verdien som følger dave dave oppføringer, som er to byte. Hvorfor er det to byte når vi bare sendt en karakter til en fil? La oss ta en titt på hva som skjer inne i filen.,

Annonsering

Vi vil bruke hexdump – kommandoen, som vil gi oss en nøyaktig opptelling av byte og tillate oss å «se» ikke-utskrift tegn som heksadesimale verdier. Vi vil også bruke -C (kanonisk) muligheten til å tvinge utgang for å vise verdier i kroppen av-utgang, så vel som deres alfanumeriske tegn ekvivalenter:

hexdump -C geek.txt

output viser oss at begynnelsen på offset 00000000 i filen, det er en byte som inneholder en heksadesimal verdi 31., og en som inneholder en heksadesimal verdi av 0A., Den høyre delen av utskriften viser disse verdiene som alfanumeriske tegn, der det er mulig.

Den heksadesimale verdien av 31 brukes til å representere tallet en. Den heksadesimale verdien av 0A brukes til å representere den linjeskift-tegn, som ikke skal vises som et alfanumerisk tegn, slik det er vist som et punktum (.) istedenfor. Den linjeskift-tegn er lagt til av echo . Som standard echobegynner på en ny linje etter det viser teksten det er behov for å skrive til terminalvinduet.,

Som stemmer overens med resultatet fra ls og enig med fil lengde på to byte.

i SLEKT: Hvordan å Bruke ls-Kommandoen for å Liste Filer og Kataloger på Linux

Annonsering

Nå, vil vi bruke du – kommandoen til å se på fil-størrelse:

du geek.txt

Det sier størrelse er fire, men fire av hva?

Det Er Blokker, og Så Er Det Kvartaler

Ved du rapporter-fil-størrelser i kvartaler, størrelsen det bruker, avhenger av flere faktorer., Du kan angi hvilken blokk-størrelse bør bruke på kommandolinjen. Hvis du ikke tvinge du for å bruke en bestemt blokk-størrelse, det følger et sett med regler for å bestemme hvilken du skal bruke.

for det Første, det kontrollerer følgende miljøvariabler:

  • DU_BLOCK_SIZE
  • BLOCK_SIZE
  • BLOCKSIZE

Hvis noen av disse eksisterer, blokk-størrelse er satt, og du stopp kontroll. Hvis dette ikke er angitt, du standarder til en blokk størrelse på, men 1024 bytes., Med mindre, det er, er en miljøvariabel kalt POSIXLY_CORRECT er satt. Hvis det er tilfelle, du standarder til en blokk størrelse på 512 byte.

Annonsering

Så, hvordan finner vi ut hvem som er i bruk? Du kan sjekke hvert miljø-variabelen til å finne ut av det, men det er en raskere måte. La oss sammenligne resultatene til blokk-størrelse filsystemet bruker i stedet.

for Å oppdage blokk-størrelse filsystemet bruker, vil vi bruke tune2fs program., Deretter vil vi bruke -l (liste superblock) – alternativet, rør den ut gjennom grep, og deretter skrive ut linjene som inneholder ordet «Blokk.»

I dette eksempelet skal vi se på filsystemet på den første partisjonen på den første harddisken, sda1, og vi trenger å bruke sudo:

sudo tune2fs -l /dev/sda1 | grep Block

Den file system blokk størrelse er 4,096 byte. Hvis vi dele det med det resultatet vi fikk fra du (fire), det viser du standard blokk-størrelse er 1024 bytes., Vi vet nå flere viktige ting.

Annonsering

Første, vet vi at den minste mengden av filsystemet eiendomsmegling som kan brukes til å lagre en fil er 4,096 byte. Dette betyr at selv våre små, to-byte-fil er å ta opp 4 KB ledig plass på harddisken.

Den andre tingen å huske på er programmene som er dedikert til rapportering på harddisken og filsystemet statistikk, som for eksempel du, ls, og tune2fs, kan ha forskjellige oppfatninger av hva «blokk» betyr., tune2fs søknad rapporter sant file system blokk størrelser, mens ls og du kan konfigureres eller tvunget til å bruke andre kvartal størrelser. De blokk størrelser er ikke hadde til hensikt å forholde seg til filsystemet blokk-størrelse, de er bare «biter» disse kommandoene bruk i sin produksjon.

til Slutt, annet enn ved hjelp av ulike blokker størrelser, svarene fra du og tune2fs formidle den samme betydningen., tune2fs resultatet ble en blokk av 4,096 byte, og du resultatet var fire blokker av, men 1024 bytes.

Bruker du

Med ingen kommandolinje parametere eller valg, du viser total diskplass gjeldende mappe og alle undermapper bruker.

La oss ta en titt på et eksempel:

du
Annonsering

størrelsen er rapportert i standard blokk størrelse på, men 1024 byte per blokk. Hele katalogen treet er krysset.,

Bruker du på en Annen Katalog

Hvis du vil du for å rapportere på en annen katalog enn den nåværende, kan du sende banen til katalogen på kommandolinjen:

du ~/.cach/evolution/

Bruker du på en Bestemt Fil

Hvis du vil du for å rapportere på en bestemt fil, passerer banen til den filen på kommandolinjen., Du kan også sende en shell-mønster til en velge en gruppe med filer, for eksempel *.txt:

du ~/.bash_aliases

Rapportering på Filer i Kataloger

Å ha du rapport om filene i den gjeldende mappen og undermapper, bruk -a (alle filer) alternativ:

du -a
Annonsering

For hver katalog, størrelsen av hver fil som er rapportert, samt en sum for hver mappe.,

Begrense Directory Tree Dybde

Du kan fortelle du for å liste katalog-treet til en viss dybde. For å gjøre dette, bruker du -d (maks dybde) alternativet og gir en dybde-verdi som parameter. Merk at alle underkatalogene er skannet og brukes til å beregne rapportert totalt, men de er ikke alle på listen. For å sette en maksimal katalog dybden på ett nivå, kan du bruke denne kommandoen:

du -d 1

output viser den samlede størrelsen på at undermappe i den gjeldende katalogen, og gir også en sum for hver og en.,

for Å liste kataloger ett dypere nivå, kan du bruke denne kommandoen:

du -d 2

– Innstillingen Block Size

Du kan bruke block alternativet for å angi en blokk-størrelse for du for den aktuelle operasjonen.,d i de mest aktuelle blokk-størrelse i henhold til den diskplass som brukes av kataloger og filer, kan du bruke -h (lesbar) alternativ:

du -h

for Å se den tilsynelatende størrelsen på filen snarere enn den mengden harddiskplass som brukes til å lagre filen, kan du bruke --apparent-size alternativ:

du --apparent-size
Annonsering

Du kan kombinere dette med -a (alle) muligheten til å se den tilsynelatende størrelse av hver fil:

du --apparent-size -a

Hver fil som er listet opp, sammen med sin tilsynelatende størrelse.,

Vise Totaler

Hvis du vil du for å rapportere kun samlet for katalogen, bruker du -s (oppsummering) alternativ., Du kan også kombinere dette med andre muligheter, for eksempel -h (lesbar) alternativ:

du -h -s

Her vil vi bruke den med --apparent-size alternativ:

du --apparent-size -s

Viser Endring Ganger

for Å se oppretting eller siste endring klokkeslett og dato, bruk --time valg:

du --time -d 2

Merkelige Resultater?,

Hvis du ser merkelig resultater fra du , spesielt når du kryss-referanse størrelser til utgang fra andre kommandoer, er det vanligvis på grunn av ulike blokker størrelser som de ulike kommandoer kan bli sett eller de som de standard. Det kan også være på grunn av forskjellene mellom ekte filstørrelser og diskplass som kreves for å lagre dem.

Hvis du trenger å matche resultatet av andre kommandoer, kan du eksperimentere med --block alternativ i du.,

Dave McKay
Dave McKay først brukt datamaskiner når hullet papir tape som var på moten, og han har vært programmering siden den gang. Etter over 30 år i IT-bransjen, han er nå en full-time-teknologi journalist. I løpet av sin karriere har han jobbet som freelance programmerer, leder av et internasjonalt software utvikling team, en IT-tjenester project manager, og, senest, som en Data Protection Officer. Dave er en Linux-evangelist og åpen kildekode-talsmann.Les Hele Bio «

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *