Come ottenere le dimensioni di un file o di una directory in Linux

Quando si utilizza il comando du di Linux, si ottengono sia l’effettivo utilizzo del disco sia la dimensione reale di un file o di una directory. Spiegheremo perché questi valori non sono gli stessi.

Utilizzo effettivo del disco e dimensioni reali

La dimensione di un file e lo spazio che occupa sul disco rigido raramente sono le stesse. Lo spazio su disco viene allocato in blocchi. Se un file è più piccolo di un blocco, viene comunque allocato un intero blocco perché il file system non dispone di un’unità più piccola di spazio da utilizzare.

A meno che la dimensione di un file non sia un multiplo esatto di blocchi, lo spazio che utilizza sul disco rigido deve essere sempre arrotondato al blocco intero successivo. Ad esempio, se un file è più grande di due blocchi ma più piccolo di tre, occorrono comunque tre blocchi di spazio per memorizzarlo.

Vengono utilizzate due misurazioni in relazione alla dimensione del file. Il primo è la dimensione effettiva del file, che è il numero di byte di contenuto che compongono il file. Il secondo è la dimensione effettiva del file sul disco rigido. Questo è il numero di blocchi del file system necessari per memorizzare quel file.

Un esempio

Diamo un’occhiata a un semplice esempio. Reindirizzeremo un singolo carattere in un file per creare un piccolo file:

echo "1" > geek.txt

Il geek.txt “comando in una finestra di terminale.” width = “646 ″ height =” 57 “onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); ” onerror = “this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”>

Ora useremo l’elenco di formato lungo, ls, per esaminare la lunghezza del file:

ls -l geek.txt

Il

La lunghezza è il valore numerico che segue le voci dave dave, ovvero due byte. Perché sono due byte quando abbiamo inviato solo un carattere al file? Diamo un’occhiata a cosa sta succedendo all’interno del file.

Useremo il comando hexdump, che ci darà un numero esatto di byte e ci permetterà di “vedere” caratteri non stampabili come valori esadecimali. Useremo anche l’opzione -C (canonica) per forzare l’output a mostrare valori esadecimali nel file