ll
或ls -l
进行长列表时,您能够看到文件的字节大小。但是我想知道一个目录中有多少存储空间,包括该目录中的文件以及该目录中的子目录,等等。我不需要文件的数量,而是要占用这些文件的存储量。所以我想递归地知道某个目录中有多少存储空间?我猜如果有命令,它将以字节为单位。
#1 楼
尝试执行以下操作:du -s dir
或
du -sh dir
需要
-h
支持,取决于您的操作系统。请参阅
man du
#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-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
选项。这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>
评论
加-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