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

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

#1 楼

尝试执行以下操作:

du -s dir




du -sh dir


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

请参阅

man du


评论


加-b以字节为单位输出

–pcnate
16 Mar 17 '16 at 21:47

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

–万能
17年5月10日在1:29

我得到很多无法读取的目录,权限被拒绝使用sudo du安全吗?

–沙燕
20 Aug 16 '14:33



要获取所有目录的大小,请使用du -sh *。

–约书亚·品特(Joshua Pinter)
20年8月27日在18:00

#2 楼

您只需执行以下操作:

du -sh /path/to/directory


其中-s是摘要,-h是人类可读的(非标准选项)。

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

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


如果需要的话,这是通过网络传输的大小。

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

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

您也可以看到此问题。

评论


我得到很多无法读取的目录,权限被拒绝使用sudo du安全吗?

–沙燕
20年8月16日在14:33

@Shayan并不危险,但不会为您提供有关存储的信息。那是“安全”的意思吗?

– Tortor
20-10-16在2:07

我担心sudo du可能会将所有内容的所有权更改为root或其他意外情况。 @Totor

–沙燕
20-10-16在6:20



@Shayan不,它纯粹是一个“只读”工具。这里没有修改数据或元数据的风险。 :)

– Tortor
20-10-17在11:36

#3 楼

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

例如:

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选项。
这2条命令将为您提供相同的结果(给定的目录递归人类可读大小):

du -h /path/to/directory -d 0
du -sh /path/to/directory


评论


-d 1必须在目录路径之前

– Abhinav Singi
18-10-4在9:17

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

– Flo Schild
18-10-4在21:53

#4 楼

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

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

评论


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

–法伦
2015年9月16日,下午1:53

#5 楼

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

$ 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


评论


按尺寸订购:du -hs * |排序-hs

–凯撒(Kaiser)
18-09-3在13:16



#6 楼

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

也就是说,命令du(1)列出了目录和所有文件使用的空间通过它可以访问的内容,du -s提供了一个摘要,-h提供了一些实现,例如GNU du提供了“人类可读”的输出(即千字节,兆字节)。

#7 楼

对我来说,它在OS X ElCapitán上的深度和路径情况下是倒退的。

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


#8 楼

您可以使用awk Velor库中的“ file-size.sh”:

 ls -ARgo "$@" | awk '{q += } END {print q}'
 


#9 楼

我喜欢以下方法:
du -schx .[!.]* * | sort -h

其中:


s:仅显示每个参数的总数

c:产生一个总计

h:以人类可读的格式打印大小

x:跳过不同文件系统上的目录

.[!.]* *:汇总以下磁盘的使用情况每个文件,递归地查找目录(包括“隐藏”的目录)

| sort -h:基于人类可读的数字(例如2K 1G)进行排序


#10 楼

可以正常工作:
获取当前目录下每个目录的大小。
du -h --max-depth=1 .

通常:
du -h --max-depth=1 <dirpath>