用终端列出当前文件夹的文件夹大小?


134

我需要当前目录中的文件夹列表,或者我要指定其大小的文件夹列表。

我尝试使用du,但仅获得指定的目录的大小(du。./f1),而ls不显示文件夹的大小。

没有任何脚本我该如何做?


不是听起来像个混蛋,而是'man du';)
雅库布(Jakub

5
谢谢;-),但我已经尝试过了,找不到任何东西。并尝试谷歌搜索!
凯文

Answers:


212

如果要显示当前目录中的所有目录:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

要从另一个目录开始显示它们:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

如果要确保包含名称以点开头的目录,请shopt -s dotglob首先执行。


感谢所有出色的答案,但这是最简单的答案。我忘了测试的结局。
凯文

1
-s表示摘要,显示总数,-h表示可读性
wranvaud

2
按大小对文件夹排序:du -s */ | sort -n
安东·塔拉申科


1
@AntonTarasenko:shopt -s dotglob 文件
丹尼斯·威廉姆森

18

在Mac上,--max-depth选项由-d [depth]代替。因此,要查看根目录驱动器加上2级深度的可读清单,请使用以下命令:

du -hd 2 /* 

注意:此命令将在根目录之外显示前两个目录级别。 这包括将一级遍历到Volumes中,并将列出每个附加卷中每个顶级目录的摘要大小。根据您所附加的内容,此命令可能需要一些时间才能完成。


13

另一个方法是--max-depth选项。

du -h --max-depth=1 .

将列出当前文件夹下所有目录和文件的大小。

深度2将列出另一级文件夹。


4
在Mac上,它的du -hd 2 .深度为2级。
Ryan

是啊。而且可能在FreeBSD上也是如此。谢谢(你的)信息。
matthias krull 2014年



2

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

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


2

在接受的答案的基础上,此命令将显示目录中文件夹的大小,并按大小列出它们,以使您更容易理解:

$ du -sh */ | sort -rn

1

在Mac上,您可以du使用Homebrew(brew install coreutils)安装GNU(Linux)实现。然后例如:

gdu folder -shL --exclude=.git

哪里

  • gdu是给予GNU实现的名称du(默认情况下Homebrew不隐藏/usr/bin/du);
  • s 为指定的文件夹产生总计(如果要查看细分,请省略);
  • h 输出人类可读的大小;
  • L 遵循符号链接;
  • --exclude=.git 在指定文件夹中排除git目录(这只是一个示例)。

您可以通过添加忽略更多文件夹--exclude=blah。您也可以一次指定多个文件夹(即gdu folder1 folder2 ...),在这种情况下,可以使用option将所有小计合并为一个大小c


1

这是可以使用的POSIX脚本:

  • 一份文件
  • 档案
  • 目录
  • 目录
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

资源

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.