如何递归查找目录中存储的金额?


136

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

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

Answers:


146

尝试这样做:

du -s dir

要么

du -sh dir

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

看到

man du

2
添加-b到输出字节
pcnate

4
--all列出所有文件,并且-h以人类可读格式du -h显示文件大小
–all

29

您只需:

du -sh /path/to/directory

此处-s摘要-h便于阅读的内容非标准选项)。

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

du -sh --apparent-size /path/to/directory

这是您必须通过网络传输的大小。

实际上,文件中可能有“空洞”(空壳),可能小于文件系统的块大小,可能在文件系统级别被压缩,等等。手册页对此进行了解释

正如Nicklas所 指出的,您还可以使用ncdu磁盘使用率分析器。从目录内启动时,它将以最大或最小的顺序显示使用磁盘空间的文件夹和文件。

您也可以看到此问题


19

请注意,如果您想知道目录中所有{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

-d 1需要在目录路径之前
Abhinav Singi

需要吗 它在ubuntu / debian上的目录路径之后对我有用。我同意,虽然以前有过,但更好
Flo Schild

14

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

编辑:有关输出格式,请参见以下屏幕快照 http://dev.yorhel.nl/ncdu/scr


奇迹!这样,我可以看到哪些文件夹拥有大量的磁盘大小存储。我什至还发现了我所有神秘消失的文件。它是很棒的工具。
法伦

11

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

$ 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

3
按尺寸订购:du -hs * | sort -hs
Kaiser

3

在Unix中,目录仅包含名称和对文件系统对象的引用(节点,可以引用目录,文件或其他一些奇特的东西)。文件可以出现在同一目录中的多个名称下,也可以在多个目录中列出。因此,“目录和内部文件使用的空间”实际上没有任何意义,因为文件不在“内部”。

就是说,该命令du(1)列出了目录使用的空间以及通过目录可访问的所有内容,du -s并提供了摘要,-h其中包括GNU之类的某些实现du提供了“人类可读”的输出(即千字节,兆字节)。


1

对我而言,它在OS X ElCapitán上的深度和路径方面倒退了

du -h -d 1 /path/to/directory

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.