ls
的l
命令来获取目录(包含目录和子目录)的大小。它似乎适用于文件(ls -l file name
),但是如果我尝试获取目录的大小(例如ls -l /home
),虽然只有更大的字节,但我只能得到4096个字节。#1 楼
du -sh file_path
说明
du
(光盘使用率)命令估计文件路径空间使用率-sh
选项是man du
): -s, --summarize
display only a total for each argument
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
要检查多个目录并查看总数,请使用
du -sch
: -c, --total
produce a grand total
评论
...除非您有硬链接;-) stackoverflow.com/questions/19951883 / ...
–罗马诺
15年2月20日在10:31
与find例如,它很好用计算当前路径中特定子目录中的空间量:$ find。 -type d -name“ node_modules” -prune -exec du -sh {} \;
– Alex Glukhovtsev
19年4月16日在6:02
#2 楼
只需使用du
命令即可:du -sh -- *
将以可读的格式为您提供当前目录中所有非隐藏目录,文件等的累积磁盘使用情况。 br />
您可以使用
df
命令了解包含目录的文件系统中的可用空间:df -h .
评论
如果该目录中的任何文件以破折号开头,则du -sh *开始引发“未知选项”错误。做du -sh更安全-*
– mpen
16 Mar 1 '16 at 23:07
du -sh *不显示隐藏文件夹的内存使用情况
–令人讨厌的Prabhakar Singh
16-10-18在13:00
du -sh-*。*包含点文件。例如,这对于包含一个可能很大的.git目录很有用。另外,在zsh中,默认情况下您可以将set globdots设置为glob dotfiles。
–cbarrick
16-11-29在3:13
-该怎么做?我知道它适用于shell内置的结束选项参数,但是du不是内置的,而且我看不到du记录了这种用法:linux.die.net/man/1/du
– flow2k
19年1月10日在5:16
(-)用于大多数bash内置命令和许多其他命令,以表示命令选项的结尾,此后仅接受位置参数。资源
– Bal Krishna Jha
6月3日,11:47
#3 楼
du
是你的朋友。如果您只想知道目录的总大小,请跳至该目录并运行:du -hs
如果您还想知道哪些子文件夹占用了多少多少磁盘空间?您可以将此命令扩展到:
du -h --max-depth=1 | sort -hr
,这将为您提供所有子文件夹的大小(1级)。输出将被排序(顶部最大的文件夹)。
评论
在某些(也许是较旧的?)版本的linux上,似乎没有h开关,因此,我能找到的下一个最佳命令是:du -c --max-depth = 1 |排序-rn
–richhallstoke
16年7月13日在9:41
@richhallstoke(如果使用ncdu),默认情况下,文件按降序排序。
–脚掌
18年2月3日在6:35
为“ | sort -hr” +1
–花式
18 Mar 16 '18 at 19:42
为--max-depth +1。我需要查看当前目录文件夹的大小,而不是每个子目录和文件的大小。这解决了我的问题
– imans77
19/12/16在20:36
只是要注意,在osx上du似乎使用-d而不是--max-depth
–lfender6445
12月21日18:11
#4 楼
使用du
可能会很复杂,因为您似乎必须传递100个参数才能获得不错的输出。找出隐藏文件夹的大小就更加困难了。让生活变得轻松并使用
ncdu
。您可以获取每个文件夹的摘要容易浏览的东西。
#5 楼
其他人提到了du
,但是我也想提到Ncdu,它是du
的ncurses版本,并提供交互性:您可以直接浏览目录层次结构,并查看子目录的大小。#6 楼
du
命令显示文件的磁盘使用情况。-h
选项以易于理解的形式(例如4k,5M,3G)显示结果。du -h (file name)
#7 楼
以上所有示例都会告诉您磁盘上数据的大小(即特定文件正在使用的磁盘空间量,通常大于实际文件大小)。在某些情况下,如果数据实际上没有存储在该特定磁盘上并且仅存在inode引用,则这些情况将无法为您提供准确的报告。在您的示例中,您使用了ls -l on单个文件,该文件将返回文件的实际大小,而不是其在磁盘上的大小。
如果您想知道实际的文件大小,请在du中添加-b选项。
du -csbh .
评论
是。我正在使用sdfs来压缩和删除文件,所以我不知道为什么它报告的数字这么少。带有ls的文件的实际大小可以通过使用以下命令找到:du -b
– Ryan Shillington
16-10-3在22:31
#8 楼
我个人认为这是最好的,如果您不想使用ncdu
# du -sh ./*
#9 楼
df -h .; du -sh -- * | sort -hr
这将显示当前驱动器上剩余的磁盘空间,然后告诉您每个文件/目录占用了多少磁盘空间。例如,
Filesystem Size Used Avail Use% Mounted on
/dev/sdb2 206G 167G 29G 86% /
115M node_modules
2.1M examples
68K src
4.0K webpack.config.js
4.0K README.md
4.0K package.json
评论
仅供参考,它似乎报告了磁盘大小。即可能会被填充到最接近的4KB。
– mpen
16年6月15日在15:51
#10 楼
这是您的.bash_aliases的函数# du with mount exclude and sort
function dusort () {
DIR=$(echo | sed 's#\/$##')
du -scxh $(mount | awk '{print }' | sort | uniq \
| sed 's#/# -- exclude=/#') $DIR/* | sort -h
}
样本输出:
$ dusort /
...
0 /mnt
0 /sbin
0 /srv
4,0K /tmp
728K /home
23M /etc
169M /boot
528M /root
1,4G /usr
3,3G /var
4,3G /opt
9,6G total
用于子目录:
$ dusort .
$ dusort /var/log/
#11 楼
我以根用户身份使用此命令:sudo ls -1d */ | sudo xargs -I{} du {} -sh && sudo du -sh
#12 楼
递归查找当前目录下的所有文件并总结其大小:find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=} END {print total}'
评论
我将使用-not -type d不仅求和普通文件的大小(-f),而且求和符号链接的大小等等。
–anton_rh
18-09-24在11:08
这很棒,因为您没有得到存储文件所需的开销,而只有文件本身的大小。
–bballdave025
19年5月22日在21:31
#13 楼
另一种变体:du -h --max-dep=1
#14 楼
请注意,du
会打印目录在介质上所占的空间,该空间通常大于目录中所有文件的总大小,因为du
会考虑存储在介质上以组织目录的所有辅助信息的大小。 如果文件系统是可压缩的,则
du
可能输出的数量甚至少于所有文件的总大小,因为文件可能是文件系统内部压缩的,因此它们与媒体中包含的未压缩信息相比,它们占用的媒体空间更少。如果文件稀疏,则相同。如果目录中存在硬链接,则
du
可能也会打印较小的值,因为目录中的几个不同文件引用了介质上的相同数据。 > 要获得目录中所有文件的直接总大小,可以使用以下单行shell表达式(假设使用GNU系统):
find . ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc
甚至更短:
find . ! -type d -printf '%s\n' | paste -sd+ - | bc
它只是对目录(及其子目录)中所有非目录文件的大小进行逐一求和。请注意,对于符号链接,它报告符号链接的大小(而不是符号链接指向的文件的大小)。
#15 楼
这是可以使用的POSIX脚本:文件
文件
目录
目录
ls -A -R -g -o "$@" | awk '{n1 += } END {print n1}'
#16 楼
您可以使用du -sh directory/
和
du -sh filename
来了解文件夹或文件所占用的空间。 br />
df -h
将以人类可读的格式显示磁盘使用情况-h会这样做。
还有一个基于gui的程序
Disk Usage Analyzer
。 />
评论
1)严格来说,不能。 Linux有目录,没有文件夹。 2)目录的大小(该目录是存放指向其他文件的inode的特殊文件)的大小与该目录内容的大小之间存在差异。正如其他人指出的那样,du命令提供了后者,这正是您想要的。如果您似乎是新手,我将指出有用的-h选项,您可以将其添加到-l选项(即ls -lh)中,以以易于使用的方式(如1.1M)打印出文件的大小而不是1130301。@sam在回答您关于目录的问题时给出的du -hs命令中的“ h”也表示“人类可读”,并且还出现在df -h中,该数字显示了人类可读的已用量和磁盘上的可用空间。
跨站点重复:如何从命令行确定目录(文件夹)的总大小?
du -sh-*对我有用。