Perintah apa yang saya perlukan untuk Linux ls
untuk menunjukkan ukuran file dalam MB?
Perintah apa yang saya perlukan untuk Linux ls
untuk menunjukkan ukuran file dalam MB?
Jawaban:
ls -l --block-size=M
akan memberi Anda daftar format panjang (diperlukan untuk benar-benar melihat ukuran file) dan membulatkan ukuran file hingga MiB terdekat.
Jika Anda menginginkan MB (10 ^ 6 byte) daripada unit MiB (2 ^ 20 byte), gunakan --block-size=MB
saja.
Jika Anda tidak ingin M
sufiks melekat pada ukuran file, Anda dapat menggunakan sesuatu seperti --block-size=1M
. Terima kasih Stéphane Chazelas karena menyarankan ini.
Jika Anda hanya ingin ukuran file dalam satuan "masuk akal", daripada megabita secara khusus , maka Anda dapat menggunakan -lh
untuk mendapatkan daftar format panjang dan presentasi ukuran file yang dapat dibaca manusia . Ini akan menggunakan unit ukuran file untuk menjaga ukuran file disajikan dengan sekitar 1-3 digit (sehingga Anda akan melihat ukuran file seperti 6.1K
, 151K
, 7.1M
, 15M
, 1.5G
dan sebagainya.
The --block-size
parameter dijelaskan dalam halaman manual untuk ls; man ls
dan cari SIZE
. Ini memungkinkan untuk unit selain MB / MiB juga, dan dari kelihatannya (saya tidak mencobanya) ukuran blok yang sewenang-wenang juga (sehingga Anda bisa melihat ukuran file sebagai jumlah blok 429-byte jika Anda ingin untuk).
Perhatikan bahwa kedua --block-size
dan -h
ekstensi GNU di atas Open Groupls
, jadi ini mungkin tidak bekerja jika Anda tidak memiliki userland GNU (yang kebanyakan instalasi Linux lakukan). The ls
dari GNU Coreutils 8.5 tidak mendukung --block-size dan -h seperti dijelaskan di atas. Terima kasih kepada kojiro karena menunjukkan ini.
ls
? Standarls
tidak memiliki argumen seperti itu. Dengan ekstensi xsi ls
memiliki -s
bendera, yang membuatnya melaporkan jumlah blok, tetapi tidak ada bendera standar --block-size
.
--block-size
coreutils 8.5, yang diinstal pada sistem Squian Debian saya. Karena pertanyaannya secara eksplisit untuk Linux dan tidak menentukan hal lain, saya akui saya menganggap userland berpusat di sekitar GNU coreutils. Saya telah memperbarui jawaban untuk memperjelas ini. (Selain itu, Open Group tampaknya juga tidak memiliki -h. :)
)
--block-size
adalah ekstensi GNU. Saya menduga bahwa Mac OS X tidak menggunakan GNU ls
.
ls -lh
memberikan ukuran file yang dapat dibaca manusia, format panjang.
Ia menggunakan sufiks k, M, G, dan T (atau tidak ada sufiks untuk byte) sesuai kebutuhan sehingga jumlahnya tetap kecil, misalnya 1.4K
atau 178M
.
-h
adalah ekstensi GNU coreutils, bukan POSIX dasar.
Perhatikan bahwa ini tidak menjawab pertanyaan persis seperti yang ditanyakan. Jika Anda ingin ukuran ketat di MiB bahkan untuk file kecil atau raksasa, jawaban Michael Kjörling melakukan itu untuk GNU coreutilsls
.
h
jauh lebih mudah untuk ditulis daripada--block-size=M
ls -l
sama sekali jika bukan manusia? : p
ls -l
output adalah cara yang salah untuk melakukan sesuatu, 99% dari waktu. unix.stackexchange.com/questions/128985/why-not-parse-ls . 1% itu murah hati, dan cukup terbatas pada one-liner yang Anda tulis secara interaktif untuk sekali pakai, bukan skrip yang akan Anda gunakan berulang kali pada nama file yang tidak dikenal.
ls -lhS
urutkan berdasarkan ukuran, dalam format yang dapat dibaca manusia
ls -lh
jawaban untuk alasan mengapa ini tidak benar-benar menjawab pertanyaan.
Dan ini adalah opsi untuk mendaftar semuanya dalam urutan direktori dengan ukuran file (masih dapat dibaca manusia) naik.
ls -lSrh
--block-size=M
menyebabkanM
sufiks ditampilkan di sebelah ukuran, dan Anda dapat menggunakannya--block-size=1M
untuk menghilangkannya. Mungkin perlu disebutkan juga bahwa Anda memerlukan GNU ls untuk itu (sebagian besar sistem Linux yang tidak tertanam akan memiliki GNU ls).