Tôi cần những lệnh nào để Linux ls
hiển thị kích thước tệp bằng MB?
Tôi cần những lệnh nào để Linux ls
hiển thị kích thước tệp bằng MB?
Câu trả lời:
ls -l --block-size=M
sẽ 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=MB
thay thế.
Nếu bạn không muốn M
hậ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.5G
và vân vân.
Các --block-size
tham số được mô tả trong man page của ls; man ls
và 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
và -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 ls
từ 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.
ls
? Tiêu chuẩnls
không có lập luận như vậy. Với phần mở rộng xsi ls
có -s
cờ, 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
.
--block-size
như 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. :)
)
--block-size
là phần mở rộng GNU. Tôi nghi ngờ rằng Mac OS X không sử dụng GNU ls
.
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.4K
hoặ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
.
h
dễ viết hơn nhiều so với--block-size=M
ls -l
tất cả nếu không phải con người? : p
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.
ls -lhS
sắp xếp theo kích thước, ở định dạng có thể đọc được
ls -lh
câ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.
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
--block-size=M
làm cho mộtM
hậ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).