Làm cách nào để tạo `ls` hiển thị kích thước tệp tính bằng megabyte?


442

Tôi cần những lệnh nào để Linux lshiển thị kích thước tệp bằng MB?

Câu trả lời:


513

ls -l --block-size=Msẽ cung cấp cho bạn một danh sách định dạng dài (cần thiết để thực sự thấy kích thước tệp) và kích thước tệp tròn lên tới MiB gần nhất.

Nếu bạn muốn đơn vị MB (10 ^ 6 byte) thay vì đơn vị MiB (2 ^ 20 byte), hãy sử dụng --block-size=MBthay thế.

Nếu bạn không muốn Mhậu tố gắn liền với kích thước tệp, bạn có thể sử dụng một cái gì đó như --block-size=1M. Cảm ơn Stéphane Chazelas đã gợi ý điều này.

Nếu bạn chỉ đơn giản muốn kích thước tệp theo đơn vị "hợp lý", thay vì cụ thể là megabyte , thì bạn có thể sử dụng -lhđể có được danh sách định dạng dài và trình bày kích thước tệp có thể đọc được của con người . Điều này sẽ sử dụng các đơn vị kích thước tập tin để giữ kích thước file được trình bày với khoảng 1-3 chữ số (do đó bạn sẽ thấy kích thước file như 6.1K, 151K, 7.1M, 15M, 1.5Gvà vân vân.

Các --block-sizetham số được mô tả trong man page của ls; man lsvà tìm kiếm SIZE. Nó cũng cho phép các đơn vị khác ngoài MB / MiB và từ ngoại hình của nó (tôi cũng không thử) kích thước khối tùy ý (vì vậy bạn có thể xem kích thước tệp là một số khối 429 byte nếu bạn muốn đến).

Lưu ý rằng cả hai --block-size-hđều là các phần mở rộng GNU trên đầu của Open Groupls , vì vậy điều này có thể không hoạt động nếu bạn không có vùng người dùng GNU (điều mà hầu hết các cài đặt Linux làm). Các lstừ GNU coreutils 8,5 không hỗ trợ --block kích thước và -h như đã mô tả ở trên. Cảm ơn kojiro đã chỉ ra điều này.


11
Một sự khác biệt có thể đáng chú ý: --block-size=Mlàm cho một Mhậu tố được hiển thị bên cạnh kích thước và bạn có thể sử dụng --block-size=1Mđể bỏ qua nó. Điều đáng nói là bạn cũng cần GNU ls cho điều đó (hầu hết các hệ thống Linux không nhúng sẽ có GNU ls).
Stéphane Chazelas

2
Đây sẽ là GNU ls? Tiêu chuẩnls không có lập luận như vậy. Với phần mở rộng xsi ls-scờ, làm cho nó báo cáo số lượng khối, nhưng không có cờ tiêu chuẩn --block-size.
kojiro

2
@kojiro GNU ls có --block-sizenhư coreutils 8.5, đây là những gì được cài đặt trên hệ thống Bóp Debian của tôi. Vì câu hỏi rõ ràng dành cho Linux và không chỉ định bất cứ điều gì khác, tôi thừa nhận tôi đã giả sử một vùng người dùng tập trung xung quanh lõi GNU. Tôi đã cập nhật câu trả lời để làm rõ điều này. (Bên cạnh đó, Open Group ls dường như cũng không có -h. :))
CVn

2
@EmanuelBerg, 1000 ^ 7 (10 ^ 21) lớn hơn 2 ^ 64 (tức là ~ 10 ^ 19,27)
Stéphane Chazelas

4
@Tom Như đã nói trong đoạn cuối của câu trả lời, --block-sizelà phần mở rộng GNU. Tôi nghi ngờ rằng Mac OS X không sử dụng GNU ls.
một CVn

384

ls -lh cung cấp cho con người kích thước tập tin dễ đọc, định dạng dài.

Nó sử dụng hậu tố k, M, G và T (hoặc không có hậu tố cho byte) khi cần thiết để số lượng vẫn nhỏ, ví dụ 1.4Khoặc 178M.

-h là một phần mở rộng lõi của GNU, không phải là POSIX cơ bản.

Lưu ý rằng điều này không trả lời chính xác câu hỏi như đã hỏi. Nếu bạn muốn kích thước nghiêm ngặt trong MiB ngay cả đối với các tệp nhỏ hoặc khổng lồ, câu trả lời của Michael Kjorling thực hiện điều đó đối với lõi GNUls .


4
Điều đó sẽ in kích thước tệp tính bằng GB cho bất kỳ thứ gì lớn hơn chỉ dưới 1,0 GiB (tôi tin).
một CVn

5
@ MichaelKjorling Tôi không xem đó là một câu trả lời tồi (mặc dù tôi không nêu lên). Đôi khi, OP không đưa ra một câu hỏi chính xác như họ nên có thể họ chỉ muốn đầu ra có thể đọc được của con người và thay vào đó là cụm từ "tính bằng MB".
Dason

5
Nâng cao. "Điều này không trả lời câu hỏi (MB)" là một tuyên bố hoàn toàn hợp lệ nhưng câu trả lời này chỉ làm tăng tính hữu ích của trang SO này vì câu trả lời này nằm trong cùng bối cảnh. Tôi chỉ đến trang này để tìm kiếm một giải pháp cho yêu cầu chung "hiển thị ngày ở dạng có thể đọc được của con người" và hdễ viết hơn nhiều so với--block-size=M
Ejaz

6
"con người có thể đọc được" là loại mỉa mai. Ai sử dụng ls -ltất cả nếu không phải con người? : p
Blauhirn

2
@chengyang: phân tích ls -lđầu ra là cách làm sai, 99% thời gian. unix.stackexchange.com/questions/128985/why-not-parse-ls . Đó là 1% rất hào phóng và bị giới hạn khá nhiều đối với một lớp mà bạn viết tương tác để sử dụng một lần, không phải là tập lệnh bạn sẽ sử dụng nhiều lần trên tên tệp không xác định.
Peter Cordes

45

ls -lhS sắp xếp theo kích thước, ở định dạng có thể đọc được


2
Vui lòng xem các bình luận về ls -lhcâu trả lời vì lý do tại sao điều này không thực sự trả lời câu hỏi.
Alexander Batischev

2
Điều này không chỉ không thực sự trả lời câu hỏi (như đã thảo luận trong các bình luận cho câu trả lời của Sirex) mà còn không thêm bất cứ điều gì có liên quan vào câu trả lời hiện có: OP không hỏi về thứ tự sắp xếp.
một CVn

6
chỉ nghĩ sắp xếp theo kích thước là một người theo dõi tiềm năng có thể có, ít nhất đó là những gì tôi có
jaciefan

1
Trong trường hợp đó, mọi người nên xem Cách liệt kê tất cả các tệp được sắp xếp theo kích thước , chính xác theo kịch bản đó.
một CVn

Tôi tin rằng đây là một bổ sung xứng đáng cho các câu trả lời, đặc biệt là khi nó được xây dựng dựa trên câu trả lời của Sirex
Dowlers

9

Và đây là tùy chọn để liệt kê mọi thứ theo thứ tự thư mục theo kích thước tệp (vẫn có thể đọc được của con người) tăng dần.

ls -lSrh

Bạn có nghĩ rằng các ý kiến ​​từ câu trả lời khác không trả lời câu hỏi , cũng áp dụng cho câu hỏi này không?
Dan Dascalescu

@DanDascalescu Không. Những bình luận đó không hữu ích, 2 câu trả lời trong câu hỏi là. Chỉ cần 2 xu của tôi là một hack cố gắng tìm ra cách liệt kê kích thước tệp trong hệ thống linux mà anh ta không biết gì.
Hạ sĩ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.