Come posso fare in modo che `ls` mostri le dimensioni dei file in megabyte?


442

Di quali comandi ho bisogno per Linux lsper mostrare la dimensione del file in MB?

Risposte:


513

ls -l --block-size=Mti fornirà un elenco di formati lunghi (necessario per visualizzare effettivamente la dimensione del file) e dimensioni arrotondate del file fino al MiB più vicino.

Se si desidera unità MB (10 ^ 6 byte) anziché MiB (2 ^ 20 byte), utilizzare --block-size=MBinvece.

Se non si desidera che il Msuffisso sia allegato alla dimensione del file, è possibile utilizzare qualcosa di simile --block-size=1M. Grazie Stéphane Chazelas per avermelo suggerito.

Se si desidera semplicemente dimensioni di file in unità "ragionevoli", piuttosto che specificamente megabyte , è possibile utilizzare -lhper ottenere un elenco di formati lunghi e una presentazione di dimensioni dei file leggibili . Questo userà le unità di dimensioni del file per mantenere le dimensioni dei file presentati con circa 1-3 cifre (così vedrete le dimensioni dei file come 6.1K, 151K, 7.1M, 15M, 1.5Ge così via.

Il --block-sizeparametro è descritto nella pagina man di ls; man lse cerca SIZE. Permette anche unità diverse da MB / MiB e, a quanto pare (non l'ho provato), anche dimensioni di blocchi arbitrarie (quindi puoi vedere le dimensioni del file come un numero di blocchi da 429 byte se vuoi per).

Si noti che entrambi --block-sizee -hsono estensioni GNU in cima Open Groupls , quindi questo non può funzionare se non si dispone di uno spazio utente GNU (che la maggior parte delle installazioni Linux fanno). La lsda GNU Coreutils 8.5 supporta --block dimensioni e -h come sopra descritto. Grazie a Kojiro per averlo segnalato.


11
Una differenza forse vale la pena notare: fai apparire --block-size=Mun Msuffisso accanto alla dimensione e puoi usarlo --block-size=1Mper ometterlo. Vale anche la pena ricordare che è necessario GNU ls per questo (la maggior parte dei sistemi Linux non incorporati avrà GNU ls).
Stéphane Chazelas,

2
Questo sarebbe GNU ls? Standardls non ha questo argomento. Con l' estensione xsi ls è presente il -sflag, che indica il numero di blocchi, ma non esiste un flag standard --block-size.
Kojiro,

2
@kojiro GNU ha a --block-sizepartire da coreutils 8.5, che è ciò che è installato sul mio sistema Debian Squeeze. Dal momento che la domanda era esplicitamente per Linux e non specificava nient'altro, ammetto di aver ipotizzato una terra utente incentrata sui coreutils GNU. Ho aggiornato la risposta per chiarire questo. (Inoltre, Open Group non sembra avere nemmeno -h. :))
un CVn

2
@EmanuelBerg, 1000 ^ 7 (10 ^ 21) è maggiore di 2 ^ 64 (che è ~ 10 ^ 19.27)
Stéphane Chazelas,

4
@ Tom Come si dice nel paragrafo finale della risposta, --block-sizeè un'estensione GNU. Sospetto che Mac OS X non usi GNU ls.
un CVn

385

ls -lh fornisce file di dimensioni leggibili, formato lungo.

Esso utilizza k, suffissi M, G e T (o nessun suffisso per byte) come necessario in modo che il numero rimane piccolo, ad esempio 1.4Ko 178M.

-h è un'estensione GNU coreutils, non POSIX di base.

Nota che questo non risponde alla domanda esattamente come è stato chiesto. Se vuoi dimensioni rigorosamente in MiB anche per file piccoli o giganteschi, la risposta di Michael Kjörling lo fa per i coreutils GNUls .


4
Che stamperà file di dimensioni in GB per qualcosa di più grande di poco meno di 1,0 GiB (credo).
un CVn

5
@ MichaelKjörling Non la vedo come una cattiva risposta (anche se non ho votato). A volte l'OP non formula una domanda esattamente come dovrebbe, quindi era possibile che volessero solo un output leggibile dall'uomo e invece lo definisse "in MB".
Dason,

5
Upvoted. "Questo non risponde alla domanda (MB)" è un'affermazione perfettamente valida ma questa risposta ha solo aumentato l'utilità di questa pagina SO poiché questa risposta è nello stesso contesto. Sono venuto solo a questa pagina alla ricerca di una soluzione al requisito generico "mostra date in forma leggibile dall'uomo" ed hè molto più facile da scrivere rispetto a--block-size=M
Ejaz

6
"leggibile dall'uomo" è un po 'ironico. Chi usa ls -laffatto se non gli umani? : p
phil294

2
@chengyang: analizzare l' ls -loutput è il modo sbagliato di fare le cose, il 99% delle volte. unix.stackexchange.com/questions/128985/why-not-parse-ls . Quell'1% è generoso, ed è praticamente limitato a una riga che scrivi in ​​modo interattivo per un solo utilizzo, non a uno script che userai ripetutamente su nomi di file sconosciuti.
Peter Cordes,

46

ls -lhS ordina per dimensione, in formato leggibile dall'uomo


2
Si prega di vedere i commenti sulla ls -lhrisposta per i motivi per cui questo non risponde davvero alla domanda.
Alexander Batischev,

2
Non solo questo non risponde realmente alla domanda (come discusso nei commenti alla risposta di Sirex), ma non aggiunge nulla di rilevante su nessuna delle risposte esistenti: l'OP non sta chiedendo l'ordinamento.
un CVn

6
pensavo solo che l'ordinamento per dimensione fosse un potenziale follow-up che la gente avrebbe potuto avere, almeno è quello che avevo
jaciefan,

1
In tal caso, le persone dovrebbero guardare a Come elencare tutti i file ordinati per dimensione, che riguarda esattamente quello scenario.
un CVn,

Credo che si tratti di una degna aggiunta alle risposte, in particolare mentre elabora la risposta di Sirex
Dowlers,

9

E questa è l'opzione per elencare tutto in un ordine di directory in base alla dimensione del file (ancora leggibile) in ordine crescente.

ls -lSrh

Pensi che i commenti dell'altra risposta che non rispondono alla domanda si applichino anche a questo?
Dan Dascalescu il

@DanDascalescu No. Quei commenti non sono utili, le 2 risposte in questione lo sono. Solo i miei 2 centesimi come un hack cercando di capire come elencare le dimensioni dei file in un sistema Linux di cui non sa nulla.
Dowlers,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.