如何按目录中的大小对所有文件排序?


48

如何在unix目录中显示文件(按人类可读大小排序,从大到小)?

我试过了

du -h | sort -V -k 1 

但它似乎不起作用。


您能否说明您是否希望子目录大小也出现在输出中,以及是否正在寻找文件的表观大小或它们在磁盘上使用的实际大小?
jlliagre 2011年

Answers:



33
$ 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

如果您具有适当的sort版本,则可以简单地使用:

du -h | sort -rh

我的是

$ sort --version
sort (GNU coreutils) 8.12

4

ls -S对我来说,这不是一个选择。如下工作:
ls -l | sort -k 5nr
它们的“键”是要指定要排序的列(得到它的“键”)。上面我在第5列上指定-k 5nr含义排序,第5列是大小(5),按降序(n)评估为数字(n)

参考排序文档以获取更多信息


4

du -ha | sort -h

du :估计文件磁盘使用率。

-h : for human
-a : all files

sort :对文本行进行排序。

-h : for human

man du; man sort更多。它在ubuntu v15上对我有效。


1

我得到了这个为我工作:

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

哪一个(我刚刚想出)与:

ls -lS

0

与不同ls -S,这将正确处理稀疏文件:

ls -lsh | sort -n | sed 's/^[0-9 ]* //'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.