ls-command: bagaimana cara menampilkan ukuran file dalam megabyte?


161

Di Unix (Tru64), bagaimana cara membuat lsperintah menunjukkan ukuran file dalam megabyte? Saat ini saya dapat menampilkannya dalam byte menggunakan yang berikut:

ls -la

Jawaban:


247

Mungkin -hcukup untuk Anda:

-h
Ketika digunakan dengan opsi -l, gunakan sufiks unit: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte dan Petabyte untuk mengurangi jumlah digit menjadi tiga atau kurang menggunakan basis 2 untuk ukuran.

ls -lah

Saran umum: Gunakan man commandnameuntuk membaca manual / bantuan perintah tertentu, misalnya di sini man ls.


1
Terima kasih, tetapi opsi -h tampaknya tidak ada di Tru64 Unix.

8
Saran umum: instal utilitas GNU ...
reinierpost

22
Saya suka tip Anda tentang menggunakan pria, tapi sungguh, mencari di Google jauh lebih cepat daripada menggunakan pria banyak waktu (seperti sekarang, ketika saya menemukan hasil ini di Google).
trusktr

4
Google baik-baik saja dan semua untuk petunjuk umum, tetapi pada akhirnya halaman manual adalah sistem / OS, bahkan khusus host, biasanya dibuat ketika perangkat lunak dikompilasi atau diinstal, dan dengan demikian, otoritatif untuk perangkat lunak pada sistem khusus Anda.
Nevin Williams

1
Hanya untuk datang lingkaran penuh, ada orang online untuk gnu / linux: linux.die.net/man
MariusMatutiae

32

ls --block-size=Mmencetak ukuran dalam Megabytes tetapi menunjukkan 1MB juga untuk apa pun di bawah 1 MB. Saya tidak yakin apakah opsi ini dapat diterima di versi UNIX Anda ls.

Sebenarnya ls -lhjuga mencetak ukuran dalam Gigabytes jika file tersebut cukup besar (Yah anyways: di Linux 64bit ini berfungsi:>)

Di simpul samping: du -sh *mencetak juga ukuran direktori di direktori saat ini.


Terima kasih! Saya perlu memantau perubahan file langsung dalam folder dan menggunakan ls -htidak ada artinya setelah file tumbuh lebih dari 1GB, jadi saya menggunakan perintah ini dalam loop 1 detik:while true ; do ls -al --block-size=M ; sleep 1 ; done
ccpizza

15

Anda harus menggunakan awkuntuk melakukan perhitungan matematika untuk Anda:

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

Ini tidak akan mempengaruhi output untuk file yang lebih kecil dari mega.

Anda mungkin perlu menyesuaikan nomor kolom agar sesuai dengan cara Anda lsmeletakkannya. Anda dapat mengubah megake "1000000" jika itu pilihan Anda.

Ini akan mencetak lebih banyak tempat desimal daripada yang mungkin Anda inginkan. Anda bisa menerapkan fungsi pembulatan.


3
Jauh kurang elegan daripada ls -lhatau ls --block-size=M, tetapi AWK sangat berguna!
Statwonk

Apa yang saya butuhkan. Semua solusi lain membulatkan ke MB terdekat tetapi ini menunjukkan beberapa tempat desimal dan mudah disesuaikan.
zeroimpl

3
Ini adalah solusi yang bagus untuk sistem tersebut (AIX - Saya melihat Anda) yang tidak memiliki opsi -h.
Buggabill


8

coba ls -lash, itu mencetak ukuran dalam format yang dapat dibaca manusia


5

du -sm filename.txt


1
selalu membulatkan ukuran ... jika ukurannya kurang dari 1 MB katakan 500 ribu, maka juga akan mencetak 1 jt
AnonGeek

5

Anda juga bisa mengetik

du -sh ./*

Ini akan mencantumkan semua folder di bawah direktori saat ini, dengan format yang dapat dibaca manusia, termasuk ukuran file yang lebih akrab di Kb, Mb, Gb.


2

Jika Anda hanya ingin ukuran file tertentu saja, maka perintahnya, ekstrapolasi sepele dari jawaban sebelumnya, adalah:

ls -sh nama file

-sadalah untuk ukuran dan huntuk Human Readable (seperti yang disebutkan di atas beberapa kali).

Outputnya akan terlihat seperti ini:

753M myfilename

Jika Anda meninggalkan nama file, itu akan daftar direktori, menempatkan ukuran setiap file di sebelah namanya - tidak seperti apa yang ls -ladilakukan ketika dipanggil tanpa argumen nama file.

Semoga ini membantu.


2
Pertanyaan ini tentang Tru64 Unix, dan OP menyatakan hampir lima tahun yang lalu bahwa -hopsi tersebut tidak ada lspada sistem itu.
G-Man

2
ls -l --block-size=MB 

Untuk --block-sizeparameter:

  • gunakan MBuntuk 10 ^ 6
  • gunakan hanya Muntuk 2 ^ 20

Perhatikan bahwa ini tidak akan menampilkan tempat desimal . Juga, apa pun di atas 0 kB tetapi juga tidak lebih dari 1 MB akan ditampilkan sebagai1MB . Karena alasan inilah saya merasa ls -l --block-size=kBlebih berguna.
DaAwesomeP

0

Jika Anda hanya tertarik pada ukuran file, dan Anda tidak harus menggunakan lsperintah, coba yang berikut ini:

# 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

Ini akan mencetak ukuran file tanpa perlu menguraikan apa pun.


OP ingin ukuran dalam MB, mungkin opsi stat akan menghasilkan ukuran dalam bentuk yang dapat dibaca manusia?
Archemar

Ah, itu bodoh saya. Terima kasih sudah menangkapnya. stat tidak memiliki opsi untuk memanipulasi ukuran menggunakan --printf atau opsi lain sejauh yang saya tahu. Kemungkinan akan membutuhkan menggunakan kombinasi utilitas command-line printf dan bc. Dalam hal ini, mengapa repot-repot. ls dan cut / awk akan lebih cepat.
SKN
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.