如何递归查找目录中存储的数量?

如何递归查找目录中存储的数量?

ll我知道当您使用或进行长列表时,您可以看到文件的字节大小ls -l。但我想知道一个目录中有多少存储空间,包括该目录中的文件和其中的子目录等。我不需要文件的数量,而是这些文件占用的存储量。

所以我想递归地知道某个目录有多少存储空间?我猜,如果有一个命令,它将以字节为单位。

答案1

尝试这样做:(替换dir与您的目录的名称)

杜-s  目录

这给出了累积的磁盘使用情况(不是尺寸) 的 独特的(到同一文件的硬链接仅计算一次)文件(任何类型,包括目录,但实际上仅计算一次)常规的目录文件占用磁盘空间)。

du这在 POSIX 兼容实现(包括环境中的 GNU)中以 512 字节为单位表示,但有些du实现则以千字节为单位。用于保证您获得千字节。POSIXLY_CORRECTdu-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

已经提到的命令的替代方法duncdu这是一个很好的磁盘使用分析器,可在终端中使用。您可能需要先安装它,但大多数软件包存储库中都提供了它。

编辑:有关输出格式,请参阅这些屏幕截图 http://dev.yorhel.nl/ncdu/scr

相关内容