Come ottenere le dimensioni di una directory in Linux

Come ottenere le dimensioni di una directory in Linux
Conoscere le dimensioni di una directory in Linux non è così semplice come sembra. Il comando "LS -s" elencherà i file e le sotto -directory con le loro dimensioni. Tuttavia, le dimensioni (circa 4096 byte) fornite per le directory non sono l'uso del disco. La dimensione vista per una directory è la dimensione dei meta-dati della directory.

I metadati sono dati sui dati. La dimensione apparente è la dimensione dei dati che contano per l'utente ordinario del computer. Il contenuto (testo) delle lettere, delle immagini, dei video dell'utente, ecc., costituire la dimensione apparente. Questi dati non sono mantenuti arbitrariamente nel computer. I dati di dimensioni apparenti devono essere mantenuti in modo di controllo. Deve essere identificabile. Deve essere completo. Ci sono altri requisiti per questo. Alcuni dati extra sono necessari per raggiungere questi requisiti extra e questi dati extra sono i metadati.

Ricorda, c'è solo una directory in un volume. Il resto sono sotto-directory. La directory della radice dà origine a sotto-directory, che danno origine ad altre sotto-directory che scendono. Tuttavia, le sotto-directory sono generalmente chiamate directory. E così, c'è solo un albero di directory.

Quindi, "LS -s" non è utile per ottenere la dimensione di una directory. Quale comando è allora utile? - Il comando Du. "Du" sta per l'uso del disco. Stampa l'uso del disco della directory.

Questo articolo spiega le diverse caratteristiche del comando Du in Linux, che fornisce i diversi modi del programmatore per conoscere le dimensioni delle directory e le loro sotto-directory. Bash è la shell utilizzata per i campioni di codice di questo articolo.

Contenuto dell'articolo

  • Du senza opzione o argomento
  • Dimensioni di altre directory
  • dimensione apparente
  • Il comando sudo
  • Escluse le voci per dimensioni
  • escludere = pattern
  • Conclusione

Du senza opzione o argomento

La directory di lavoro attuale è la directory in cui l'utente sta attualmente lavorando. Il prompt mostra normalmente la directory di lavoro corrente. Digitando Du senza alcuna opzione e argomento, come così:

du

e quindi premendo il tasto Invio visualizzerà l'utilizzo del disco per tutte le sotto-directory della directory di lavoro corrente. Visualirà queste informazioni per il sotto-albero dell'attuale directory di lavoro. Un punto al display rappresenta la directory di lavoro corrente.

Ogni percorso del sotto-albero è rappresentato in una linea, al display. Ogni riga inizia con le dimensioni della directory (che è cognome nel percorso). Il display potrebbe essere qualcosa di simile:

8 ./dir1/dir2/dir3/dir4
12 ./DIR1/DIR2/DIR3
16 ./DIR1/DIR2
20 ./dir1

Si noti che non è chiaro se la dimensione è in byte o kilobyte o megabyte o gigabyte. Kilobyte di simbolo, k significa 1024 byte; Megabytes of Symbol, M significa 1.048.576 byte; Gigabytes of Symbol, G significa 1.073.741.824 byte. Per indicare i multipli, l'opzione -H (switch) dovrebbe essere utilizzata, come segue:

du -h

Il display sembrerebbe quindi così:

8.0k ./dir1/dir2/dir3/dir4
12K ./DIR1/DIR2/DIR3
16K ./DIR1/DIR2
20k ./dir1

Quando viene utilizzata l'opzione -h, si dice che le dimensioni siano in una forma leggibile.

Nota: con l'opzione -all, il comando DU fornirà anche l'utilizzo del disco per i file; Tuttavia, l'utilizzo del disco per i file non verrà affrontato in questo articolo.

Dimensioni di altre directory

Un tipico percorso assoluto per un volume Linux è il seguente:

/Home/John/Dirone/Dirtwo/DirThree/Dirfour

Il primo / è la directory di radice. Questa directory ha sotto-directory immediate, inclusa la home directory. La home directory ha la directory dell'utente. Se il nome dell'utente è John, allora può nominare la directory dell'utente, John. La directory dell'utente è identificata da ~. Quindi, l'utente può utilizzare il comando "cd ~" per raggiungere la sua directory da qualsiasi directory. Dirone è una directory creata dall'utente. L'utente può anche creare altre directory a questo livello. Dirtwo, Dirthree e Dirfour sono sotto-directory delle loro directory precedenti, create dall'utente.

L'utente può conoscere le dimensioni di qualsiasi altra directory e le sue sottodirectory (sotto-albero) da qualsiasi directory, aggirando il percorso assoluto come argomento. Ad esempio, se è necessario l'utilizzo del disco,

/Home/John/Dirone/Dirtwo

allora il comando sarebbe:

Du -h/Home/John/Dirone/Dirtwo

O

Du -h ~/dirone/dirtwo

dove ~ rappresenta la directory dell'utente.

Per utilizzare un percorso relativo, l'utente deve già essere nella directory genitore corrispondente. Ad esempio, se il prompt viene visualizzato,

John@host: ~/dirone $

Significa che l'utente è alla directory,/home/John/dirone, quindi il seguente comando darà lo stesso risultato del comando sopra:

Du -h Dirtwo

I percorsi sarebbero ancora relativi. Per visualizzare le stesse informazioni per la directory corrente, utilizzare nessun argomento o utilizzare il punto.

Questo schema può essere usato per ottenere le dimensioni di una sola directory, l'ultima in un percorso (preceduto dal percorso). È possibile ottenere le dimensioni di una directory nel mezzo di un percorso - vedi "Exclude = pattern" di seguito.

Somma totale

È possibile produrre una grande dimensione totale di tutte le directory coinvolte. Per la situazione di cui sopra, il comando sarebbe:

Du -h - -total

dimensione apparente

La dimensione apparente è generalmente più piccola dell'uso del disco. Tuttavia, in alcune situazioni, la dimensione apparente è maggiore dell'uso del disco; Motivo - vedi più tardi. Il comando per ottenere le dimensioni apparenti per il percorso relativo sopra sarebbe:

DU -H -Apparent Size Dirtwo

Massimo profondità

Con -max -depth = 0, Du stampa le dimensioni della sola directory di lavoro attuale; Con Du -max-Depth = 1, Du stampa le dimensioni dell'attuale directory di lavoro e le dimensioni di tutte le sue sotto-directory di primo livello; con -max-depth = 2, Du stampa le dimensioni dell'attuale directory di lavoro e le dimensioni di tutte le sue sotto-directory di primo livello e di tutte le sue sotto-directory di secondo livello; Con -max-depth = 3, Du stampa le dimensioni dell'attuale directory di lavoro e tutte le sue sotto-directory di primo livello, e tutte le sue sotto-directory di secondo livello e di tutte le sue sotto-directory di terzo livello; Questo continua con un valore crescente di massimo. Un esempio del suo uso è:

Du -h - -max -depth = 2

Il comando sudo

Una delle directory con le sue sotto-directory nella directory della radice è var. Se i tipi dell'utente

Du -h /var

e le presse entrano, si renderà conto che il permesso è negato per alcune directory. Cioè, non può conoscere le dimensioni di alcune directory. L'autorizzazione viene negata perché l'utente non è il superutente. Il superuser ha il privilegio di vedere le dimensioni (utilizzo del disco) di quelle directory. Quindi, affinché l'utente acquisisca quel privilegio, deve usare il comando sudo come segue:

sudo du -h /var

Se la shell chiede all'utente la sua password, l'utente deve digitare la password e premere Invio. Con il comando sudo, l'utente ordinario (programmatore) può vedere le dimensioni di tutte le directory nella directory var e directory simili.

Escluse le voci per dimensioni

L'opzione "-hreshold = size" non consentirà directory di elenco le cui dimensioni sono inferiori alla dimensione. Per il percorso,

/Home/John/Dirone/Dirtwo/DirThree/Dirfour

Con il prompt in "John@host: ~ $", allora

Du -h --Threshold = 12k Dirone

Laddove 12k significa 12 kilobyte, non visualizzerà la linea per qualsiasi directory il cui utilizzo del disco è inferiore a 12k.

-escludere = pattern

Questa opzione e valore possono omettere le righe di directory che l'utente non desidera nell'elenco.

Per omettere la linea per l'ultima directory, dirfo del percorso

/Home/John/Dirone/Dirtwo/DirThree/Dirfour

Il comando dovrebbe essere:

Du -h --exclude = dirone/dirtwo/dirthree/dirfour dirone

Il risultato sarà qualcosa di simile,

4.0k DiRone/Dirtwo/Dirthree
8.0k DiRone/Dirtwo
12k dirone

Nota: le dimensioni non hanno incluso la dimensione della directory dell'ultimo livello (dirfour) del percorso.

Per avere solo le dimensioni delle directory di profondità superiore e dei loro sotto-alberi, non hanno le directory di profondità più basse nell'opzione. Quindi con il comando,

Du -h --exclude = dirone/dirtwo/dirthree Dirone
L'output sarà qualcosa di simile,
4.0k DiRone/Dirtwo
8k dirone

Nota: le dimensioni hanno escluso le dimensioni delle directory delle leva inferiori dell'albero.

Considera di nuovo, il collegamento assoluto,

/Home/John/Dirone/Dirtwo/DirThree/Dirfour

Il seguente comando otterrà l'utilizzo del disco solo della directory dirtwo, che è una directory all'interno del percorso. Il comando è:

Du -h --exclude =/home/john/dirone/dirtwo/*/home/john/dirone/dirtwo

L'argomento ha tutte le directory precedenti fino a quella in questione. Il valore di esclusione ha tutte le directory precedenti, che terminano con *, subito dopo quella in questione. * significa tutte le sotto-directory a quel livello (e i loro sotto-alberi). Il risultato sarà qualcosa di simile,

5.0k/home/john/dirone/dirtwo

Conclusione

Cercare di conoscere le dimensioni di una directory con il comando "LS -s" è fuorviante. Con esso, si ottengono solo i metadati della directory. Per conoscere l'uso del disco di una directory, il comando DU dovrebbe essere utilizzato. Se utilizzati con l'opzione -h, le dimensioni delle directory sono leggibili. La dimensione apparente può essere ottenuta utilizzando l'opzione di dimensioni apparenti. Senza alcuna opzione e argomento, il comando DU mostra semplicemente le dimensioni di tutte le sottodirectory della directory corrente, incluso quello della directory corrente. L'argomento a "du" è il percorso, che può iniziare dalla radice. Le opzioni e alcuni dei loro valori decidono esattamente quali directory sono affrontate. Il comando sudo fornisce i privilegi di superuser utente ordinari per impostazione predefinita.