如何从命令行确定目录(文件夹)的总大小?
是否有一个简单的命令来显示目录(文件夹)中所有文件的总聚合大小(磁盘使用情况)?
我试过这些,他们没有做我想做的事:
-
ls -l
,它只显示目录中单个文件的大小 -
df -h
,仅显示磁盘上的空闲和已用空间。
命令du
“为目录递归地汇总每个FILE的磁盘使用情况”,例如,
du -hs /path/to/directory
-
-h
是得到“人类可读”的数字,例如得到140M
而不是143260
(大小以KB为单位) -
-s
用于汇总(否则您不仅会获得文件夹的大小,还会分别获取文件夹中的所有内容)
当您使用-h
您可以使用人类可读值进行排序
du -sh | sort -h
sort
上的-h
标志将考虑“Human Readable”大小值。
如果要避免递归列出所有文件和目录,可以提供--max-depth
参数来限制显示的项目数。 最常见的是, – --max-depth=1
du -sh --max-depth=1 /path/to/directory
最近我发现了一个很棒的基于ncurses的交互式工具,它可以快速为您提供有关目录大小的概述。 多年来一直在搜索这种工具。
- 快速浏览文件层次结构
- 你可以删除工具内部的巨大临时文件
- 非常快
将其视为命令行的baobab :
apt-get install ncdu
这会以递归方式查找大小,并将其放在每个文件夹名称的旁边,以及底部的总大小,所有这些都是人类格式
du -hsc *
请享用!
du foldername
这里有关于该命令的更多信息
tree
是这项工作的另一个有用的命令:
只需通过sudo apt-get install tree
安装它并输入以下内容:
tree --du -h /path/to/directory ... ... 33.7M used in 0 directories, 25 files
从人树 :
-h Print the size of each file but in a more human readable way, eg appending a size letter for kilo‐ bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E). --du For each directory report its size as the accumulation of sizes of all its files and sub-directories (and their files, and so on). The total amount of used space is also given in the final report (like the 'du -c' command.)
以下是我用来打印总数,文件夹和文件大小的内容:
$ du -sch /home/vivek/* | sort -rh
细节
------------------------------------------------------------ -c, --total produce a grand total -h, --human-readable print sizes in human readable format (eg, 1K 234M 2G) -s, --summarize display only a total for each argument ------------------------------------------------------------- -h, --human-numeric-sort compare human readable numbers (eg, 2K 1G) -r, --reverse reverse the result of comparisons
产量
70M total 69M /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib 992K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results 292K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target 52K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files
答案显而易见, du
是查找目录总大小的工具。 但是,有几个因素需要考虑:
-
有时,
du
输出可能会产生误导,因为它会报告文件系统分配的空间,这可能与各个文件的大小总和不同。 通常,文件系统将为文件分配4096个字节,即使您只存储了一个字符! -
输出差异由于2的功率和10个单位的功率。
-h
切换到du
将字节数除以2 ^ 10(1024),2 ^ 20(1048576)等,以提供人类可读输出。 许多人可能更习惯于看到10的力量(例如1K = 1000,1M = 1000000)并且对结果感到惊讶。
要查找目录中所有文件的大小总和(以字节为单位),请执行以下操作:
find -ls | awk '{sum += $7} END {print sum}'
例:
$ du -s -B 1 255729664 $ find . -ls | awk '{sum += $7} END {print sum}' 249008169
对于只有可读格式的目录大小,请使用以下内容:
du -hs directoryname
这可能不在正确的部分,但从命令行,您可以尝试:
ls -sh filename
-s
是大小, -h
是人类可读的。
使用-l
在ls
列表中显示,如下所示:
ls -shl
du /foldername
是了解文件夹大小的标准命令。 最佳做法是通过阅读手册页来查找选项:
man du
在使用命令之前,您应该阅读手册页( 在线提供 )。
这是一个POSIX脚本,可以使用:
- 一份文件
- 档
- 一个目录
- 目录
#!/bin/sh ls -ARgo "$@" | awk '{q += $3} END {print q}'
资源
我认为最好的是:
du -h directory_name | tail -n1
这将仅显示您感兴趣的目录的大小,并且不会打印该目录中任何目录和文件的大小。
我应该补充一点,如果文件夹的大小很大,那么du需要更长的时间。 你必须耐心等待这个命令才能运作。 就像任何其他unix命令一样,您可以通过在此命令之前使用time
来找出此过程的总时间:
time du -h directory_name | tail -n1