ls-command: come visualizzare la dimensione del file in megabyte?


161

In Unix (Tru64), come faccio a lsmostrare al comando la dimensione del file in megabyte? Attualmente sono in grado di mostrarlo in byte usando quanto segue:

ls -la

Risposte:


247

Forse -hè sufficiente per te:

-h
Se utilizzato con l'opzione -l, utilizzare i suffissi unità: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte e Petabyte per ridurre il numero di cifre a tre o meno utilizzando la base 2 per le dimensioni.

ls -lah

Consiglio generale: usare man commandnameper leggere il manuale / aiuto di un determinato comando, ad es man ls. Qui .


1
Grazie, ma l'opzione -h non sembra esistere su Tru64 Unix.

8
Consiglio generale: installa le utility GNU ...
reinierpost,

22
Mi piace il tuo consiglio sull'uso di man, ma in realtà la ricerca su Google è molto più veloce dell'uso di man molte volte (come ora, quando ho trovato questo risultato su Google).
trusktr,

4
Google va bene e tutti per suggerimenti generali, ma alla fine le pagine man sono di sistema / OS, anche specifiche per l'host, di solito create quando il software viene compilato o installato e, quindi, autorevole per il software sul tuo particolare sistema.
Nevin Williams,

1
Solo per tornare al punto di partenza
MariusMatutiae,

32

ls --block-size=Mstampa le dimensioni in Megabyte ma mostra 1 MB anche per qualsiasi valore inferiore a 1 MB. Tuttavia, non sono sicuro che questa opzione sia accettabile nella tua versione UNIX di ls.

In realtà ls -lhstampa anche dimensioni in Gigabyte se il file è abbastanza grande (Beh comunque: su Linux a 64 bit questo funziona:>)

Su un nodo laterale: du -sh *stampa anche le dimensioni della directory nella directory corrente.


Grazie! Avevo bisogno di monitorare le modifiche ai file live in una cartella e l'uso non ha ls -hsenso dopo che un file ha superato 1 GB, quindi uso questo comando in un ciclo di 1 secondo:while true ; do ls -al --block-size=M ; sleep 1 ; done
ccpizza

15

Dovrai usare awkper fare la matematica per te:

ls -l | awk 'BEGIN{mega=1048576} $5 >= mega {$5 = $5/mega "MB"} {print}'

Ciò non influirà sull'output per file di dimensioni inferiori a mega.

Potrebbe essere necessario modificare il numero del campo in modo che corrisponda al modo in lscui è disposto. Puoi modificare mega"1000000" se questa è la tua preferenza.

Questo stamperà più decimali di quanto tu probabilmente desideri. È possibile implementare una funzione di arrotondamento.


3
Molto meno elegante di ls -lho ls --block-size=M, ma AWK è molto utile!
Statwonk,

Proprio quello di cui avevo bisogno. Tutte le altre soluzioni sono arrotondate al MB più vicino ma questo mostra alcuni decimali ed è facilmente personalizzabile.
zeroimpl,

3
Questa è una buona soluzione per quei sistemi (AIX - ti sto guardando) che non hanno l'opzione -h.
Buggabill,


8

prova ls -lash, stampa formati in un formato leggibile dall'uomo


5

du -sm filename.txt


1
arrotonda sempre la dimensione ... se la dimensione è inferiore a 1 MB, dì 500K, quindi stampa anche 1M
AnonGeek,

5

Puoi anche digitare

du -sh ./*

Questo elencherà tutte le cartelle nella directory corrente, con un formato leggibile dall'uomo, comprese le dimensioni dei file più familiari in Kb, Mb, Gb.


2

Se vuoi solo la dimensione di un solo file specifico, il comando, una banale estrapolazione delle risposte precedenti, è:

ls -sh nome file

-sè per dimensioni e hè per Human Readable (come menzionato sopra alcune volte).

L'output sarà simile al seguente:

753M myfilename

Se si omettono i nomi dei file, verranno elencati la directory, posizionando le dimensioni di ciascun file accanto al suo nome, non diversamente da ciò che ls -laviene fatto quando viene invocato senza argomenti di nome file.

Spero che sia di aiuto.


2
Questa domanda riguarda Tru64 Unix e l'OP ha dichiarato quasi cinque anni fa che l' -hopzione non esiste lssu quel sistema.
G-Man,

2
ls -l --block-size=MB 

Per il --block-sizeparametro:

  • usare MBper 10 ^ 6
  • usare solo Mper 2 ^ 20

Nota che questo non mostrerà alcun decimale . Inoltre, verrà visualizzato qualsiasi valore superiore a 0 kB ma non superiore a 1 MB1MB . Per questo motivo ho scoperto ls -l --block-size=kBdi essere più utile.
DaAwesomeP,

0

Se ti interessa solo la dimensione del file e non devi utilizzare il lscomando, prova quanto segue:

# echo "Hello World" > file.txt
# ls -l file.txt 
-rw-r--r-- 1 user user 12 Mar 10 11:32 file.txt
# stat --printf='%s\n' file.txt
12

Questo stamperà la dimensione del file senza la necessità di analizzare nulla.


OP desidera dimensioni in MB, forse un'opzione stat produrrà dimensioni in forma leggibile dall'uomo?
Archemar,

Ah, quello era stupido da parte mia. Grazie per averlo colto. stat non ha un'opzione per manipolare le dimensioni usando --printf o qualsiasi altra opzione per quanto ne so. Probabilmente richiederebbe l'uso di una combinazione di utility da riga di comando printf e bc. Nel qual caso, perché preoccuparsi. Ls e cut / awk sarebbero più veloci.
SKN,
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.