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.