Cum să obțineți dimensiunea unui director în Linux

How Get Size Directory Linux



Cunoașterea dimensiunii unui director în Linux nu este atât de simplă pe cât pare. Comanda ls -s va lista fișierele și subdirectoarele cu dimensiunile lor. Cu toate acestea, dimensiunile (aproximativ 4096 octeți) date pentru directoare nu sunt utilizarea discului. Dimensiunea vizualizată pentru un director este dimensiunea meta-datelor din director.

Metadatele sunt date despre date. Dimensiunea aparentă este dimensiunea datelor care contează pentru utilizatorul obișnuit al computerului. Conținutul (textul) scrisorilor, imaginilor, videoclipurilor etc. ale utilizatorului constituie dimensiunea aparentă. Aceste date nu sunt păstrate în mod arbitrar în computer. Datele de dimensiuni aparente trebuie păstrate într-un mod de control. Trebuie să fie identificabil. Trebuie să fie completă. Există și alte cerințe pentru aceasta. Pentru a îndeplini aceste cerințe suplimentare sunt necesare câteva date suplimentare, iar aceste date suplimentare sunt meta-date.







Amintiți-vă, există un singur director într-un volum. Restul sunt subdirectoare. Directorul rădăcină dă naștere subdirectoarelor, care dau naștere altor subdirectoare în jos. Cu toate acestea, subdirectoarele sunt de obicei numite pur și simplu directoare. Deci, există un singur arbore de directoare.



Deci, ls -s nu este util pentru a obține dimensiunea unui director. Ce comandă este atunci utilă? - Comanda du. du înseamnă Disk Usage. Tipărește utilizarea discului din director.



Acest articol explică diferitele caracteristici ale comenzii du în Linux, care oferă diferite modalități de programare pentru a cunoaște dimensiunile directoarelor și ale subdirectoarelor acestora. Bash este shell-ul folosit pentru mostrele de cod din acest articol.





Conținutul articolului

du fără Opțiune sau Argument

Directorul de lucru curent este directorul în care lucrează în prezent utilizatorul. Solicitarea afișează în mod normal directorul de lucru curent. Tastați du fără nicio opțiune și argument, așa:



de

și apoi apăsând tasta Enter se va afișa utilizarea discului pentru toate subdirectoarele din directorul de lucru curent. Va afișa aceste informații pentru sub-arborele directorului de lucru curent. Un punct pe afișaj reprezintă directorul de lucru curent.

Fiecare cale a subarborelui este reprezentată într-o linie, pe afișaj. Fiecare linie începe cu dimensiunea directorului (care este numele de familie din cale). Afișajul poate fi ceva de genul:

8./dir1/dir2/dir3/dir4

12./dir1/dir2/dir3

16./dir1/dir2

douăzeci./dir1

Observați că nu este clar dacă dimensiunea este în octeți sau kilobyți sau megabytes sau gigabytes. Kilobytes de simbol, K înseamnă 1024 bytes; Megabiți de simbol, M înseamnă 1.048.576 octeți; Gigabytes de simbol, G înseamnă 1.073.741.824 bytes. Pentru indicarea multiplilor, ar trebui utilizată opțiunea -h (comutator), după cum urmează:

de -h

Afișajul ar arăta astfel:

8,0K./dir1/dir2/dir3/dir4

12K./dir1/dir2/dir3

16K./dir1/dir2

20K./dir1

Când se folosește opțiunea -h, se spune că dimensiunile sunt într-o formă lizibilă.

Notă: cu opțiunea –all, comanda du va oferi și utilizarea discului pentru fișiere; cu toate acestea, utilizarea discului pentru fișiere nu va fi abordată în acest articol.

Dimensiunea altor directoare

O cale absolută tipică pentru un volum Linux este următoarea:

/Acasă/Ioan/Spune/dirTwo/dirTree/dirFour

Primul / este directorul rădăcină. Acest director are subdirectoare imediate, inclusiv directorul principal. Directorul principal are directorul utilizatorului. Dacă numele utilizatorului este John, atunci el poate numi directorul utilizatorului, John. Directorul utilizatorului este identificat prin ~. Deci, utilizatorul poate folosi comanda cd ~ pentru a ajunge la directorul său din orice director. dirOne este un director creat de utilizator. Utilizatorul poate crea și alte directoare la acest nivel. dirTwo, dirThree și dirFour sunt subdirectoare către directoarele lor anterioare, create de utilizator.

Utilizatorul poate cunoaște dimensiunea oricărui alt director și subdirectoarele sale (subarborele) din orice director, ocolind calea absolută ca argument. De exemplu, dacă este necesară utilizarea discului,

/Acasă/Ioan/Spune/dirTwo

atunci comanda ar fi:

de -h /Acasă/Ioan/Spune/dirTwo

sau

de -h~/Spune/dirTwo

unde ~ reprezintă directorul utilizatorului.

Pentru a utiliza o cale relativă, utilizatorul trebuie să se afle deja în directorul părinte corespunzător. De exemplu, dacă se afișează promptul,

Ioan@gazdă: ~/spune $

adică utilizatorul se află în director, / home / john / dirOne, atunci următoarea comandă va da același rezultat ca și comanda de mai sus:

de -hdirTwo

Căile ar fi în continuare relative. Pentru a afișa aceleași informații pentru directorul curent, nu utilizați niciun argument sau utilizați punctul.

Această schemă poate fi utilizată pentru a obține dimensiunea unui singur director, ultimul dintr-o cale (precedat de cale). Este posibil să obțineți dimensiunea unui director în mijlocul unei căi - vezi exclude = PATTERN de mai jos.

Total general

Se poate produce o dimensiune totală mare a tuturor directoarelor implicate. Pentru situația de mai sus, comanda ar fi:

de -h --total

aparent-mărime

Dimensiunea aparentă este de obicei mai mică decât utilizarea discului. Cu toate acestea, în unele situații, dimensiunea aparentă este mai mare decât utilizarea discului; motiv - vezi mai târziu. Comanda pentru a obține dimensiunile aparente pentru calea relativă de mai sus ar fi:

de -h --dimensiunea aparentuluidirTwo

Adâncime maximă

Cu –max-depth = 0, du tipărește dimensiunea numai a directorului de lucru curent; cu du -max-depth = 1, du tipărește dimensiunea directorului de lucru curent și dimensiunile tuturor subdirectoarelor sale de primul nivel; cu –max-depth = 2, du tipărește dimensiunea directorului de lucru curent și dimensiunile tuturor subdirectoarelor sale de primul nivel și a tuturor subdirectoarelor sale de al doilea nivel; cu –max-depth = 3, du tipărește dimensiunea directorului de lucru curent și a tuturor subdirectoarelor sale de primul nivel și a tuturor subdirectoarelor sale de al doilea nivel și a tuturor subdirectoarelor sale de al treilea nivel; acest lucru continuă cu creșterea valorii adâncimii maxime. Un exemplu de utilizare a acestuia este:

de -h --adancime maxima=2

Comanda sudo

Unul dintre directoare cu propriile subdirectoare din directorul rădăcină este var. Dacă utilizatorul tastează

de -h /Unde

și apasă pe Enter, își va da seama că permisiunea este refuzată pentru unele directoare. Adică, el nu poate cunoaște dimensiunile unor directoare. Permisiunea este refuzată deoarece utilizatorul nu este superutilizatorul. Superutilizatorul are privilegiul de a vedea dimensiunile (utilizarea discului) acelor directoare. Deci, pentru ca utilizatorul să dobândească acel privilegiu, trebuie să utilizeze comanda sudo după cum urmează:

sudo de -h /Unde

Dacă shell-ul îi cere utilizatorului parola, acesta trebuie să introducă parola și să apese Enter. Cu comanda sudo, utilizatorul obișnuit (programator) poate vedea dimensiunile tuturor directoarelor din directorul var și directoare similare.

Excluderea intrărilor după dimensiune

Opțiunea –threshold = SIZE nu va permite listarea directoarelor ale căror dimensiuni sunt mai mici decât SIZE. Pentru cale,

/Acasă/Ioan/Spune/dirTwo/dirThree/dirFour

cu promptul la[e-mail protejat]: ~ $, atunci

de -h --prag= 12K dirOne

unde 12K înseamnă 12 kilobyte, nu va afișa linia pentru niciun director a cărui utilizare a discului este mai mică de 12K.

–Exclude = MODEL

Această opțiune și valoare pot omite liniile de director pe care utilizatorul nu le dorește în listă.

Pentru a omite linia pentru ultimul director, dirFour din cale

/Acasă/Ioan/Spune/dirTwo/dirThree/dirFour

comanda ar trebui să fie:

de -h --exclude= spune/dirTwo/dirThree/dirFour dirOne

Rezultatul va fi ceva de genul,

4.0K dirOne/dirTwo/dirThree

8,0K dirOne/dirTwo

12K dirOne

Notă: dimensiunile nu au inclus dimensiunea directorului de ultim nivel (dirFour) al căii.

Pentru a avea doar dimensiunile directoarelor de adâncime superioară și ale subarborilor lor, nu aveți directoare de adâncime inferioară în opțiune. Deci, cu comanda,

de -h --exclude= spune/dirTwo/dirTree dirOne

rezultatul va fi ceva de genul,

4.0K dirOne/dirTwo

8K dirOne

Notă: dimensiunile au exclus dimensiunile directoarelor de pârghie inferioare ale arborelui.

Luați în considerare din nou legătura absolută,

/Acasă/Ioan/Spune/dirTwo/dirTree/dirFour

Următoarea comandă va obține utilizarea discului numai a directorului dirTwo, care este un director din cale. Comanda este:

de -h --exclude=/Acasă/Ioan/Spune/dirTwo/ * /Acasă/Ioan/Spune/dirTwo

Argumentul are toate directoarele precedente până la cel în cauză. Valoarea excluderii are toate directoarele precedente, care se termină cu *, imediat după cel în cauză. * înseamnă toate subdirectoarele de la acel nivel (și subarborii lor). Rezultatul va fi ceva de genul,

5,0K/Acasă/Ioan/Spune/dirTwo

Concluzie

Încercarea de a cunoaște dimensiunea unui director cu comanda ls -s este înșelătoare. Cu aceasta, se obțin doar meta-datele din director. Pentru a cunoaște utilizarea discului unui director, ar trebui utilizată comanda du. Când este utilizat cu opțiunea -h, dimensiunile directoarelor sunt lizibile. Dimensiunea aparentă poate fi obținută folosind opțiunea dimensiune aparentă. Fără nicio opțiune și argument, comanda du afișează doar dimensiunile tuturor subdirectoarelor din directorul curent, inclusiv pe cel al directorului curent. Argumentul pentru du este calea, care poate începe de la rădăcină. Opțiunile și unele dintre valorile lor decid exact ce directoare sunt adresate. Comanda sudo oferă utilizatorului obișnuit privilegii de superutilizator în mod implicit.