GNU/Linux >> Linux Esercitazione >  >> Linux

Controllo della dimensione della directory con du Command in Linux

Conoscere la dimensione di un file è facile in Linux. Tutto quello che devi fare è usare l'opzione -l e -h con il comando ls e ti mostrerà la dimensione del file insieme ai permessi del file e ai timestamp dei file. Ecco un esempio di output:

ls -lh tutorials
total 56K
-rwxr--r-- 1 abhishek abhishek  456 Mar  6 16:21 agatha.txt
-rw-r--r-- 1 abhishek abhishek    0 Apr 16 19:53 a.t
-rwxr--r-- 1 abhishek abhishek  140 Mar 22 16:41 bash_script.sh
-rw-rw-r-- 1 abhishek abhishek   95 Feb 11 13:12 cpluplus.cpp
-rw-r--r-- 1 abhishek abhishek  163 Apr 13 15:07 prog.py
-rw-r--r-- 1 abhishek abhishek  19K Mar 18 18:46 services
-rw-r--r-- 1 abhishek abhishek  356 Dec 11 21:35 sherlock.txt
-rwxrw-r-- 1 abhishek abhishek   72 Jan 21 15:44 sleep.sh
drwxr-xr-x 3 abhishek abhishek 4.0K Jan  4 20:10 target
drwxr-xr-x 2 abhishek abhishek 4.0K Apr 16 18:27 test_dir
-rw-rw-r-- 1 abhishek abhishek   55 Mar 11 16:28 text-file.txt

Noteresti qualcosa di strano. Il comando ls mostra la dimensione di tutte le directory come 4 KB. Non può essere corretto, vero? Certo che no.

La dimensione di una cartella o directory in Linux può essere trovata usando il comando du. du qui sta per utilizzo del disco. Spiegherò la logica alla base della dimensione di 4.0K per le directory più avanti in questo tutorial. Per il momento, concentriamoci sulla dimensione della directory.

Se vuoi controllare la dimensione della directory in Linux, puoi usare questo comando:

du -sh path_to_directory

Questo ti darà la dimensione totale di detta directory in un formato leggibile dall'uomo, ad esempio KB, MB o GB.

Utilizzo del comando du per ottenere la dimensione della directory in Linux

Ti mostrerò vari esempi del comando du che puoi usare per controllare la dimensione della directory e l'utilizzo del disco.

La sintassi del comando du è piuttosto semplice.

du [option] path_to_file_or_directory

Vediamo come utilizzare il comando du per ottenere le informazioni sulla dimensione del file e della directory in Linux.

Ecco la struttura della directory "tutorial" che userò in questo tutorial:

tree tutorials
.
├── agatha.txt
├── bash_script.sh
├── cpluplus.cpp
├── prog.py
├── services
├── sherlock.txt
├── sleep.sh
├── target
│   ├── agatha.txt
│   ├── file1.txt
│   └── past
│       ├── file1.txt
│       ├── file2.txt
│       └── source1
│           └── source2
│               └── file1.txt
├── test_dir
│   ├── c.xyz
│   ├── myzip1.zip
│   └── myzip2.zip
└── text-file.txt
5 directories, 16 files

Ora, se eseguo il comando du nella directory "tutorials", mostrerà le dimensioni di tutte le sottodirectory e quindi sommerà le dimensioni di tutte le sottodirectory e dei file in fondo.

du tutorials

Questo è l'output per la directory dei tutorial.

8 tutorials/target/past/source1/source2
12 tutorials/target/past/source1
24 tutorials/target/past
36 tutorials/target
12 tutorials/test_dir
100 tutorials

Mostra la dimensione del disco in formato leggibile dall'uomo

Ora il problema con l'output sopra del comando du è che non sai se 100 è 100 KB o 100 MB o 100 GB. Non preoccuparti, puoi modificare questo comportamento e visualizzare la dimensione della directory in un formato leggibile dall'uomo con l'opzione -h.

du -h tutorials

Ecco l'output molto più facile da leggere ora:

8.0K tutorials/target/past/source1/source2
12K tutorials/target/past/source1
24K tutorials/target/past
36K tutorials/target
12K tutorials/test_dir
100K tutorials

Puoi usare l'opzione -m per MB e l'opzione -k per KB invece di -h. Ma anche se la dimensione è inferiore a 1 MB, mostrerà sempre la dimensione come 1 MB. Questo è il motivo per cui usare l'opzione -h è sempre un'opzione migliore.

Mostra anche le dimensioni dei file

Hai notato che la directory dei tutorial ha diversi file ma non vengono visualizzati nell'output del comando du? È perché sebbene le dimensioni del file vengano conteggiate nella somma totale delle dimensioni della directory, i file non vengono visualizzati per impostazione predefinita.

Per visualizzare la dimensione dei file insieme alle directory, puoi utilizzare l'opzione -a. Sarebbe meglio se lo combini con l'opzione -h per ottenere le dimensioni in un formato leggibile dall'uomo.

du -ah tutorials

Ora l'output mostrerà i file insieme alle directory:

4.0K tutorials/cpluplus.cpp
4.0K tutorials/prog.py
20K tutorials/services
4.0K tutorials/text-file.txt
4.0K tutorials/bash_script.sh
4.0K tutorials/target/file1.txt
4.0K tutorials/target/past/file2.txt
4.0K tutorials/target/past/file1.txt
4.0K tutorials/target/past/source1/source2/file1.txt
8.0K tutorials/target/past/source1/source2
12K tutorials/target/past/source1
24K tutorials/target/past
4.0K tutorials/target/agatha.txt
36K tutorials/target
4.0K tutorials/sherlock.txt
4.0K tutorials/test_dir/myzip1.zip
4.0K tutorials/test_dir/myzip2.zip
0 tutorials/test_dir/c.xyz
12K tutorials/test_dir
4.0K tutorials/sleep.sh
4.0K tutorials/agatha.txt
100K tutorials

Suggerimento bonus:risolvere il mistero di 4 KB

Nota che le dimensioni potrebbero sembrare che siano state arrotondate. Voglio dire, tutte le dimensioni sono nel multiplo di 4K. Infatti, a parte i file vuoti, tutti i file hanno una dimensione di almeno 4 KB. È una coincidenza? Non proprio.

Anche se il testo del file è in byte, la dimensione minima del file è 4K perché è la dimensione minima del blocco del filesystem. Indipendentemente dalla dimensione del testo sul file, verrà assegnato almeno un blocco di 4 KB di memoria sul disco.

E poiché i blocchi di memoria hanno una dimensione di 4 KB, le dimensioni che vedrai saranno sempre nel multiplo di 4 KB.

Ora, probabilmente sai già che tutto è file in UNIX/Linux. Una directory è essenzialmente un file che contiene le informazioni su tutta la posizione di tutti i file che "contiene".

Quindi, quando usi il comando ls, tratta la directory come un file e mostra la sua dimensione che è un blocco di memoria e quindi la dimensione visualizzata è 4 KB.

Mostra solo la dimensione totale della directory in Linux

Se trovi l'output del comando du troppo dettagliato e desideri vedere solo la dimensione totale della directory in un formato leggibile dall'uomo, puoi utilizzare l'opzione sum -s.

du -sh tutorials

Ora l'output sarà solo una riga che mostra la dimensione totale della directory:

100K tutorials

Mostra l'utilizzo del disco da parte di più directory

Non è che sei limitato a controllare la dimensione di una sola directory alla volta. Puoi specificare più directory nel comando du.

Ad esempio, userò le opzioni -sh per mostrare la dimensione totale di due directory qui.

du -sh tutorials/target/ tutorials/test_dir

L'output mostrerà la dimensione di entrambe le directory singolarmente:

36K tutorials/target/
12K tutorials/test_dir

Mostra il totale complessivo di tutte le dimensioni delle directory

Nell'esempio precedente, hai visto le dimensioni totali di entrambe le directory singolarmente. Puoi usare l'opzione -c per mostrare un totale generale per la somma di tutte le directory nell'output.

du -csh tutorials/target/ tutorials/test_dir

Come puoi vedere nell'output, riassume le dimensioni e ti dà il totale generale:

36K tutorials/target/
12K tutorials/test_dir
48K total

Non mostrare le dimensioni delle sottodirectory

E se volessi controllare le dimensioni di tutte le directory nella cartella corrente? Per impostazione predefinita, du command andrà nelle sottodirectory di tutte le directory e l'output diventa difficile da capire specialmente se hai troppe directory nidificate.

Quello che puoi fare è definire il livello di profondità da controllare mentre mostri le dimensioni per le sottodirectory.

Quindi, se vuoi vedere le dimensioni delle directory nella cartella corrente, puoi impostare la profondità su 1 in questo modo:

du -h --max-depth=1 tutorials

Ora l'output mostrerà le sottodirectory solo nella directory corrente. Non andrà oltre.

36K tutorials/target
12K tutorials/test_dir
100K tutorials

Se non ricordi la –max-depth, puoi usare la sua forma abbreviata -d flag:

du -h -d1 tutorials

Escludi determinati tipi di file durante il calcolo delle dimensioni del disco

Il comando du ti dà la possibilità di escludere determinati tipi di file. Puoi usare regex insieme all'opzione –exclude.

Ad esempio, per calcolare la somma di tutti i file esclusi i file con estensione txt, è possibile utilizzare questo comando:

du -h --exclude="*.txt" tutorials

E ora se vedi l'output, la dimensione totale della directory sarebbe stata ridotta:

4.0K tutorials/target/past/source1/source2
8.0K tutorials/target/past/source1
12K tutorials/target/past
16K tutorials/target
12K tutorials/test_dir
68K tutorials

Suggerimento bonus:trovare la sottodirectory più grande

Puoi combinare l'output del comando du con il comando sort per ordinare le directory in base alla loro dimensione.

du -h --max-depth=1 tutorials | sort -rh

Questo mostrerà le directory nell'ordine inverso delle loro dimensioni, ovvero la directory più grande in alto.

100K tutorials
36K tutorials/target
12K tutorials/test_dir

Ovviamente la prima è la directory stessa, ma la seconda ti dà la sottodirectory più grande.

Puoi ulteriormente combinare con il comando head o il comando tail per ottenere il file x più grande o i file/directory più piccoli.

Lo hai trovato utile?

Ho cercato di spiegare tutto l'uso essenziale del comando du in Linux. Ma come sempre, ci sono molte più opzioni disponibili per il comando che puoi trovare nella sua pagina man. Se vuoi solo scoprire la dimensione di una directory in Linux, questo tutorial dovrebbe darti informazioni sufficienti. Se vuoi controllare lo spazio su disco in Linux, usa il comando df.

Ti è piaciuto il tutorial? Ti è stato d'aiuto? Fatemi sapere nei commenti. Se hai qualche altro consiglio interessante su du command, perché non condividerlo con noi?


Linux
  1. Come ottenere la dimensione di una directory in Linux

  2. Comando Tee Linux con esempi

  3. Comando JQ in Linux con esempi

  4. Comandi Linux più semplici con 10 esempi

  5. Comando di spostamento della directory di Linux

Echo Command in Linux con esempi

Comando IP Linux con esempi

Du comando in Linux

15 Comando Linux ps con esempi

Comando CD Linux con esempi

Comando mv in Linux