Risposte:
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 commandname
per leggere il manuale / aiuto di un determinato comando, ad es man ls
. Qui .
ls --block-size=M
stampa 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 -lh
stampa 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.
ls -h
senso 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
Dovrai usare awk
per 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 ls
cui è 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.
ls -lh
o ls --block-size=M
, ma AWK è molto utile!
prova ls -shR
per un formato ricorsivo leggibile dall'uomo.
-h
Tru64 e lo ha fatto più di due anni prima che questa risposta fosse pubblicata.
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 -la
viene fatto quando viene invocato senza argomenti di nome file.
Spero che sia di aiuto.
-h
opzione non esiste ls
su quel sistema.
ls -l --block-size=MB
Per il --block-size
parametro:
MB
per 10 ^ 6M
per 2 ^ 201MB
. Per questo motivo ho scoperto ls -l --block-size=kB
di essere più utile.
Se ti interessa solo la dimensione del file e non devi utilizzare il ls
comando, 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.