我想以列表格式获取目录及其大小的列表,例如在执行ls -l时得到的格式。

问题是,有一个单行命令可以执行此操作吗?我看到其他人只有很长的命令才能输出此命令。那太长了。

哪个命令可以执行此操作,或者可以轻松键入哪些命令组合? du -h给出了它,但是它显示了我不想要的所有子文件夹。只是当前目录文件夹。

#1 楼

您可能想查看按大小排序的目录:

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp


评论


如果目录中有大量条目,则此方法不起作用。 bash:/ run / current-system / sw / bin / du:参数列表过长

–克里斯·斯特里钦斯基(Chris Stryczynski)
19年2月23日在19:13

#2 楼

试试这个

du -h --max-depth=1


输出

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .


替代

如果--max-depth=1是对于您的口味来说太长了,您也可以尝试使用:

du -h -s *


这使用-s--summarize),并且默认情况下只会打印文件夹本身的大小。通过传递当前工作目录(*)中的所有元素,它将产生与--max-depth=1类似的输出:

Output

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src


区别是微妙。前一种方法将显示当前工作目录的总大小以及其中包含的所有文件夹的总大小...但是只能显示深度为1。

后一种方法将计算单独通过的所有项目的总大小。因此,它在输出中包括符号链接lib64,但不包括隐藏项(其名称以点开头)。它还缺少当前工作目录的总大小,因为它没有作为参数传递。

评论


完美的答案。在Mac OSX上,无法识别--depth参数。使用du -h -d 1可获得相同的结果。

–迪伦
2014年9月4日在21:46

#3 楼

打印磁盘上所有文件文件夹和隐藏文件的大小:

el@dev /home/el $ du -sh `ls -a`
258M    .
265M    ..
4.0K    .classpath
258M    .git
4.0K    .gitignore
9.0K    nbactions.xml
12K     README
20K     .README.swp
4.0K    run.sh
23K    XmlPostPropagate.php


评论


但是要当心!为什么不应该解析ls(1)的输出

–卡米尔·马乔洛夫斯基(Kamil Maciorowski)
17年11月24日在7:03

#4 楼

值得一提的是“ NCurses磁盘使用率” shell命令。


Ncdu是具有ncurses接口的磁盘使用率分析器。它被设计为在没有完整图形设置可用的远程服务器上查找太空猪,但是即使在常规台式机系统上,它也是一个有用的工具。 Ncdu旨在快速,简单和易于使用,
并且应该能够在安装了
ncurses的任何最小的POSIX类似环境中运行。