当前位置: 首页>>技术问答>>正文


如何从命令行确定目录(文件夹)的总大小?

, ,

问题描述

是否有一个简单的命令来显示目录(文件夹)中所有文件的总聚合大小(磁盘使用情况)?

我已经尝试过这些,他们没有做我想做的事情:

  • ls -l,它只显示目录中单个文件的大小,也不显示

  • df -h,它只显示磁盘上的空闲空间和已用空间。

最佳解决方案

命令du“以目录递归方式总结每个FILE的磁盘使用情况”,例如,

du -hs /path/to/directory
  • -h将获得数字”human readable”,例如,获取140M而不是143260(以千字节为单位的大小)

  • -s用于摘要(否则,您将不仅获得文件夹的大小,还会分别获取文件夹中的所有内容)

次佳解决方案

最近我发现了一个很好的,基于ncurses的交互式工具,它可以快速给你一个关于目录大小的概述。多年来一直在搜索这种工具。

  • 通过文件层次结构快速钻取

  • 您可以删除例如来自工具内的大量临时文件

  • 非常快

将它看作命令行的baobab

apt-get install ncdu

第三种解决方案

这会递归地查找大小,并将其放在每个文件夹名称的旁边,以及底部的总大小,全部以人类格式显示

du -hsc *

第四种方案

请享用!

du foldername

有关该命令here的更多信息

第五种方案

tree是这项工作的另一个有用的命令:

只需通过sudo apt-get install tree安装并键入以下内容:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

来自man tree

-h    Print  the size of each file but in a more human readable way, e.g. 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

Details

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

Output

 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 <dir> -ls | awk '{sum += $7} END {print sum}'

例:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14.html,未经允许,请勿转载。