GNU/Linux >> Linux Esercitazione >  >> Linux

qual è il comando più affidabile per trovare la dimensione effettiva di un file linux

Non ci sono problemi di imprecisione o affidabilità qui, stai solo confrontando due numeri diversi:dimensione logica e dimensione fisica.

Ecco l'illustrazione di Wikipedia per i file sparsi:

ls mostra le aree grigie+verdi, la lunghezza logica del file. du (senza --apparent-size ) mostra solo le aree verdi, poiché sono quelle che occupano spazio.

Puoi creare un file sparse con dd count=0 bs=1M seek=100 of=myfile .

ls mostra 100MiB perché questa è la lunghezza del file:

$ ls -lh myfile
-rw-r----- 1 me me 100M Jul 15 10:57 myfile

du mostra 0, perché è la quantità di dati allocati:

$ du myfile
0 myfile

ls -l --block-size=M

ti darà un elenco di formato lungo (necessario per vedere effettivamente la dimensione del file) e arrotonda le dimensioni del file fino al MiB più vicino .

Se vuoi MB (10^6 byte) anziché MiB (2^20 byte) unità, usa --block-size=MB invece.

Se non vuoi il M suffisso allegato alla dimensione del file, puoi usare qualcosa come --block-size=1M . Grazie Stéphane Chazelas per aver suggerito questo.

Questo è descritto nella pagina man per ls; man ls e cerca SIZE . Consente unità diverse da MB/MiB anche, e dall'aspetto (non l'ho provato) anche dimensioni di blocco arbitrarie (quindi potresti vedere la dimensione del file come numero di blocchi da 412 byte, se lo desideri).

Nota che il --block-size parametro è un'estensione GNU in cima a ls di Open Group , quindi potrebbe non funzionare se non si dispone di un'area utente GNU (cosa che fa la maggior parte delle installazioni Linux). Ls da GNU coreutils 8.5 supporta --block-size come descritto sopra.


Esistono diverse nozioni sulla dimensione del file, come spiegato nella risposta di quell'altro guiy e nella figura della pagina wiki sui file sparsi.

Tuttavia, potresti voler utilizzare entrambi i comandi ls(1) e stat(1).

Se codifichi in C, prendi in considerazione l'utilizzo di stat(2) &lseek(2) syscalls.

Vedi anche i riferimenti in questa risposta.


Linux
  1. Trova file e directory su Linux con il comando find

  2. Come utilizzare il comando Tar in Linux

  3. Qual è lo scopo del file .bashrc in Linux

  4. Qual è l'unità di dimensione predefinita nel comando linux ls -l

  5. Qual è il comando per copiare, leggere e rimuovere file in Linux

Come utilizzare il comando touch in Linux

Come utilizzare il comando head di Linux

Come usare il comando diff di Linux

Cos'è il comando Linux Watch + Esempi

Qual è il comando kill in Linux?

Il comando Trova Directory di Linux:spiegato