ll
我知道当您使用或进行长列表时,您可以看到文件的字节大小ls -l
。但我想知道一个目录中有多少存储空间,包括该目录中的文件和其中的子目录等。我不需要文件的数量,而是这些文件占用的存储量。
所以我想递归地知道某个目录有多少存储空间?我猜,如果有一个命令,它将以字节为单位。
答案1
尝试这样做:(替换dir
与您的目录的名称)
杜-s 目录
这给出了累积的磁盘使用情况(不是尺寸) 的 独特的(到同一文件的硬链接仅计算一次)文件(任何类型,包括目录,但实际上仅计算一次)常规的和目录文件占用磁盘空间)。
du
这在 POSIX 兼容实现(包括环境中的 GNU)中以 512 字节为单位表示,但有些du
实现则以千字节为单位。用于保证您获得千字节。POSIXLY_CORRECT
du
-k
为了尺寸(不是磁盘使用情况) 以字节为单位,与 GNU 实现du
或兼容:
杜目录
或(仍然不是标准):
杜什目录
对于人类可读的尺寸(磁盘使用情况)。
看
man du
(此处的链接用于 GNU 实现)。
答案2
你只需这样做:
du -sh /path/to/directory
哪里-s
是为了概括并-h
为人类可读(非标准选项)。使用标准 -k
而是为了获得 KiB。
当心然而,(不同于ls
)这会不是给你看文件大小但磁盘使用情况(即文件系统块大小的倍数)。文件本身实际上可能更小,甚至更大。
所以获取文件大小,您可以使用以下--apparent-size
选项:
du -sh --apparent-size /path/to/directory
如果需要的话,这是通过网络传输的大小。
事实上,该文件可能有“洞”(空壳),可能小于文件系统块大小,可能在文件系统级别压缩等。手册页解释这。
作为尼克拉斯 指出,您还可以使用ncdu
磁盘使用分析器。从目录中启动,它将按从大到小的顺序显示哪些文件夹和文件使用磁盘空间。
你可以看到这个问题以及。
答案3
请注意,如果您想知道目录内所有 {sub} 文件夹的大小,您还可以使用-d
或--max-depth
选项du
(它带有一个参数:递归限制)
例如 :
du -h /path/to/directory -d 1
会向你展示类似的东西
4.0K /path/to/directory/folder1
16M /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M /path/to/directory/folder4
8G /path/to/directory/folder5
PS:0
作为递归限制输入相当于选项-s
。这两个命令将为您提供相同的结果(您给定的目录递归人类可读大小):
du -h /path/to/directory -d 0
du -sh /path/to/directory
答案4
已经提到的命令的替代方法du
是ncdu
这是一个很好的磁盘使用分析器,可在终端中使用。您可能需要先安装它,但大多数软件包存储库中都提供了它。
编辑:有关输出格式,请参阅这些屏幕截图 http://dev.yorhel.nl/ncdu/scr