Làm thế nào tôi có thể sắp xếp tất cả các tập tin theo kích thước trong một thư mục?


48

Làm cách nào tôi có thể hiển thị các tệp trong thư mục unix được sắp xếp theo kích thước có thể đọc được của con người, từ lớn nhất đến nhỏ nhất?

Tôi đã thử

du -h | sort -V -k 1 

nhưng nó dường như không hoạt động.


Bạn có thể vui lòng làm rõ nếu bạn đang mong đợi kích thước thư mục con cũng xuất hiện trong đầu ra không, và nếu bạn đang tìm kích thước rõ ràng của các tệp hoặc kích thước thực tế mà chúng sử dụng trên đĩa?
jlliagre

Câu trả lời:


53

ls(1) /sort:

-S     sort by file size

1
-Skhông còn là một đối số sắp xếp hợp lệ ít nhất là trên Ubuntu. Câu trả lời dưới đây của @alex đã làm việc cho tôi. Liên kết câu trả lời là superuser.com/a/990437/528836 .
Prasanna

32
$ ls -lhS

-l     use a long listing format
-h     with -l, print sizes in human readable format (e.g., 1K 234M 2G)
-S     sort by file size

16

Nếu bạn có sortphiên bản phù hợp, bạn có thể chỉ cần sử dụng:

du -h | sort -rh

của tôi là

$ sort --version
sort (GNU coreutils) 8.12

4

ls -Skhông phải là một lựa chọn trên hệ điều hành cho tôi. Cách làm việc sau đây:
ls -l | sort -k 5nr
"Khóa" của họ là chỉ định cột cần sắp xếp (lấy nó, "khóa"). Ở trên tôi chỉ định sắp xếp-k 5nr nghĩa trên cột thứ 5 có kích thước (5) được đánh giá là một số (n) theo thứ tự giảm dần (n)

Tài liệu sắp xếp tham khảo để biết thêm thông tin


4

du -ha | sort -h

du : ước tính sử dụng đĩa tập tin.

-h : for human
-a : all files

sort : sắp xếp các dòng văn bản.

-h : for human

man du; man sortđể biết thêm Nó hoạt động với tôi trên Ubuntu v15.


1

Tôi đã làm điều này để làm việc cho tôi:

ls -l | sort -g -k 5 -r

Mà (tôi vừa tìm ra) giống như:

ls -lS

0

Không giống như ls -S, điều này sẽ xử lý đúng các tệp thưa thớt:

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
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.