在 Bash 中使用一行命令以列表格式显示每个子目录大小?

Pat*_*パトシ 126 linux bash du

我想以列表格式获取目录及其大小的列表,就像执行ls -l.

问题是有一个单行命令可以做到这一点吗?我看到其他人有很长的命令只是为了输出这个。那太长了。

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

Der*_*ler 135

尝试这个

du -h --max-depth=1
Run Code Online (Sandbox Code Playgroud)

输出

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    .
Run Code Online (Sandbox Code Playgroud)

选择

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

du -h -s *
Run Code Online (Sandbox Code Playgroud)

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

输出

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
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 118

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

$ 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
Run Code Online (Sandbox Code Playgroud)

  • 如果目录中有大量条目,这将不起作用。`bash: /run/current-system/sw/bin/du: 参数列表太长` (2认同)

Eri*_*ski 6

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

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
Run Code Online (Sandbox Code Playgroud)

  • 但要小心![*为什么你不应该解析 ls(1)* 的输出](http://mywiki.wooledge.org/ParsingLs) (2认同)

Ray*_*Ray 5

值得一提的是NCurses Disk Usage shell 命令。

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