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

Rob*_* IV 192 directory disk-usage recursive

我知道当您使用llls -l。但我想知道一个目录中有多少存储空间,包括该目录中的文件和其中的子目录等。我不想要文件数量,而是这些文件占用的存储量。

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

Gil*_*not 216

尝试这样做:

du -s dir
Run Code Online (Sandbox Code Playgroud)

或者

du -sh dir
Run Code Online (Sandbox Code Playgroud)

需要-h支持,取决于您的操作系统。

man du
Run Code Online (Sandbox Code Playgroud)

  • --all 列出所有文件,-h 以人类可读格式显示文件大小 du -h --all (4认同)
  • 添加`-b`以字节为单位输出 (2认同)
  • 要获取所有目录的大小,请使用“du -sh *”。 (2认同)

Tot*_*tor 39

你只需要:

du -sh /path/to/directory
Run Code Online (Sandbox Code Playgroud)

其中-s是用于概要-h人类可读的非标准选项)。

但是请注意与 不同ls,这不会显示文件大小,而是显示磁盘使用情况(即文件系统块大小的倍数),但文件可能更小,甚至更大,因此您可以使用该--apparent-size选项:

du -sh --apparent-size /path/to/directory
Run Code Online (Sandbox Code Playgroud)

如果必须,这是通过网络传输的大小。

事实上,文件可能有“洞”(空壳),可能小于文件系统块大小,可能在文件系统级别被压缩等。手册页解释了这一点。

正如尼克拉斯 指出的那样,您也可以使用ncdu磁盘使用情况分析器。从目录中启动,它将通过从大到小的顺序向您显示哪些文件夹和文件使用磁盘空间。

你也可以看到这个问题

  • @Shayan 不,它纯粹是一个“只读”工具。此处没有修改数据或元数据的风险。:) (2认同)

Flo*_*ild 33

请注意,如果您想知道一个目录中所有 {sub} 文件夹的大小,您还可以使用-dor--max-depth选项du(它带有一个参数:递归限制)

例如 :

du -h /path/to/directory -d 1
Run Code Online (Sandbox Code Playgroud)

会向你展示类似的东西

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

PS:0作为递归限制进入相当于-s选项。这 2 个命令将为您提供相同的结果(您给定的目录递归人类可读大小):

du -h /path/to/directory -d 0
du -sh /path/to/directory
Run Code Online (Sandbox Code Playgroud)

  • 需要吗?它在 ubuntu/debian 上的目录路径之后对我有用。虽然以前有它更好,我同意 (2认同)

小智 19

这将为您提供当前目录中的大小列表,包括文件夹(递归)和文件。

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt
Run Code Online (Sandbox Code Playgroud)

  • 按尺寸订购:du -hs * | 排序 -hs (5认同)

小智 18

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

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


小智 7

我喜欢以下方法:

du -schx .[!.]* * | sort -h
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • s:仅显示每个参数的总计
  • c:产生总计
  • h:以人类可读格式打印尺寸
  • x:跳过不同文件系统上的目录
  • .[!.]* *:总结每个文件的磁盘使用情况,递归目录(包括“隐藏”目录)
  • | sort -h:根据人类可读的数字排序(例如,2K 1G)