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
phuclv
sumber

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.

Felix
sumber
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.

Januari
sumber
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.

Dennis Williamson
sumber
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
14

mencoba ls -shRuntuk format yang dapat dibaca manusia rekursif.

Tukang sortir
sumber
4
OP telah menyatakan bahwa tidak ada -hpada Tru64 , dan melakukannya lebih dari dua tahun sebelum jawaban ini diposting.
CVn
3
Pemikiran Ini adalah tanggung jawab saya untuk membantu mereka yang mencapai sini dengan pencarian google yang sama
Penyortir
8

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

n0pe
sumber
5

du -sm filename.txt

Eter
sumber
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.

Keng
sumber
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.

Rob Jones
sumber
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
Evan
sumber
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.

SKN
sumber
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