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

Dav*_*rry 973 filesystem command-line

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

我已经尝试过这些,但它们没有做我想要的:

  • ls -l,它只显示目录中单个文件的大小,也不显示
  • df -h,它只显示我磁盘上的可用空间和已用空间。

Mar*_*erg 1591

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

du -hs /path/to/directory
Run Code Online (Sandbox Code Playgroud)
  • -h是获取“人类可读”的数字,例如获取140M而不是143260(以千字节为单位的大小)
  • -s为总结(否则你会得到的不仅仅是该文件夹的大小,同时也为所有该文件夹分开)

当您使用时,-h您可以使用对人类可读的值进行排序

du -h | sort -h
Run Code Online (Sandbox Code Playgroud)

-hsort将考虑“人类可读的”大小值。


如果想避免递归列出所有文件和目录,您可以提供--max-depth参数来限制显示的项目数。最常见的,--max-depth=1

du -h --max-depth=1 /path/to/directory
Run Code Online (Sandbox Code Playgroud)

  • 我使用 `du -sh` 或 DOOSH 作为记住它的一种方式(注意:命令是相同的,只是为了记忆目的而组织的命令行标志) (122认同)
  • 尊重加倍努力。:) (13认同)
  • 这也适用于 OS X!谢谢,我真的在寻找一种方法来清理本地机器和服务器上的文件,但自动化方法似乎不起作用。所以,我运行`du -hs *`并进入最大的目录,发现哪些文件如此之大......这是一个很好的方法,最好的部分是你不需要安装任何东西!绝对值得我点赞 (4认同)
  • du 有一个有用的选项,称为 --apparent-size。它可用于查找文件或目录的实际大小(与其在磁盘上的占用空间相反),例如,只有 4 个字符的文本文件将占用大约 6 个字节,但仍会显示为占用 ~4K常规 du -sh 输出。但是,如果您传递 --apparent-size 选项,则输出将为 6。 man du 说: --apparent-size 打印表观大小,而不是磁盘使用情况;尽管表观大小通常较小,但由于(“稀疏”)文件中的漏洞、内部碎片、间接块,它可能会更大 (3认同)

gee*_*ekQ 201

最近我发现了一个很棒的基于 ncurses 的交互式工具,它可以快速为您提供有关目录大小的概述。多年来一直在寻找这种工具。

  • 快速向下钻取文件层次结构
  • 您可以从工具内部删除例如巨大的临时文件
  • 极快

把它想象成命令行的猴面包树

apt-get install ncdu
Run Code Online (Sandbox Code Playgroud)

  • 这绝对是太棒了!像 DaisyDisk 一样,适用于 OSX (13认同)
  • `ncdu` 太棒了!安装后,只需执行此`ncdu /`。您将很快找到系统上最大的文件。在 ncdu 的控制台界面中也按 `h`。它有非常有用的快捷键 (3认同)
  • 很酷的工具。使用手册页查找所有很酷的快捷方式,例如“a”,它显示所有文件的表观大小。这是我使用“du”时遇到的最大问题,它需要输入太多内容才能看到表观大小,而这通常是我真正想知道的。 (2认同)

小智 72

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

du -hsc *
Run Code Online (Sandbox Code Playgroud)

  • 使用`du -hsc * | sort -hr` 如果你想获得排序的文件夹列表 (3认同)

myu*_*uf3 19

享受!

du foldername
Run Code Online (Sandbox Code Playgroud)

有关该命令的更多信息here

  • 是的。我更喜欢添加“-h”来使文件夹大小“人类可读”。``du -h 文件夹名称`` (3认同)

小智 15

以下是我用来打印总数、文件夹和文件大小的内容:

$ du -sch /home/vivek/* | sort -rh
Run Code Online (Sandbox Code Playgroud)

细节

 ------------------------------------------------------------
   -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
Run Code Online (Sandbox Code Playgroud)

输出

 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
Run Code Online (Sandbox Code Playgroud)


αғs*_*нιη 14

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

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

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

33.7M used in 0 directories, 25 files
Run Code Online (Sandbox Code Playgroud)

人树

-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.)
Run Code Online (Sandbox Code Playgroud)


qwr*_*qwr 8

要查看所有文件和目录的大小,请使用

du -had1 dir/
Run Code Online (Sandbox Code Playgroud)

(也许就像“你有1吗”)

  • du:设备/磁盘使用情况
  • -h:人类可读的尺寸
  • -a:显示文件,而不仅仅是目录
  • -d1:仅显示深度为 1 的总计,即当前目录的内容

对于当前目录,目录参数可以省略。

du -sh dir/*具有相同的效果,但由于 shell 通配符而不会显示隐藏的文件和目录。


pdp*_*pdp 7

答案已经很明显,这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}'
Run Code Online (Sandbox Code Playgroud)

例子:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169
Run Code Online (Sandbox Code Playgroud)


Ste*_*nny 7

您可以使用灰尘工具:

\n
PS C:\\git> dust\n   0B       \xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80 templates           \xe2\x94\x82                                      \xe2\x96\x88 \xe2\x94\x82   0%\n   0B     \xe2\x94\x8c\xe2\x94\x80\xe2\x94\xb4 git-core              \xe2\x94\x82                                      \xe2\x96\x88 \xe2\x94\x82   0%\n   0B   \xe2\x94\x8c\xe2\x94\x80\xe2\x94\xb4 share                   \xe2\x94\x82                                      \xe2\x96\x88 \xe2\x94\x82   0%\n  76B   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 readme.md               \xe2\x94\x82                                      \xe2\x96\x88 \xe2\x94\x82   0%\n 156K   \xe2\x94\x82   \xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80 less.exe            \xe2\x94\x82\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x88 \xe2\x94\x82   2%\n 2.7M   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 git-remote-https.exe\xe2\x94\x82\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 \xe2\x94\x82  42%\n 3.6M   \xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 git.exe             \xe2\x94\x82\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x92\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 \xe2\x94\x82  56%\n 6.5M   \xe2\x94\x82 \xe2\x94\x8c\xe2\x94\x80\xe2\x94\xb4 git-core              \xe2\x94\x82\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 \xe2\x94\x82 100%\n 6.5M   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\xb4 libexec                 \xe2\x94\x82\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 \xe2\x94\x82 100%\n 6.5M \xe2\x94\x8c\xe2\x94\x80\xe2\x94\xb4 .                         \xe2\x94\x82\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 \xe2\x94\x82 100%\n
Run Code Online (Sandbox Code Playgroud)\n

我的示例来自 Windows,但也支持 Linux 和 Apple:

\n

https://github.com/bootandy/dust

\n

  • 我喜欢它如何使用单个屏幕来显示最大的子目录。 (2认同)