我想以列表格式获取目录及其大小的列表,就像执行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
在输出中包含符号链接,但不包括隐藏项(名称以点开头)。它还缺少当前工作目录的总大小,因为它没有作为参数传递。
小智 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)
打印磁盘上所有文件夹和隐藏文件的大小:
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)
值得一提的是NCurses Disk Usage shell 命令。
Ncdu 是一个带有 ncurses 接口的磁盘使用分析器。它旨在在您没有完整图形设置可用的远程服务器上查找太空猪,但即使在常规桌面系统上它也是一个有用的工具。Ncdu 的目标是快速、简单和易于使用,并且应该能够在安装了 ncurses 的任何最小的类 POSIX 环境中运行。