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

我已经尝试过这些,但是它们不执行我想要的操作:



ls -l(仅显示目录中单个文件的大小),也

df -h(仅显示目录中的可用空间和已用空间)磁盘。


评论

相关:如何列出目录中文件和目录的递归文件大小?

跨站点重复:如何在命令行上获取目录的大小?

友情提醒,它可能对像BTRFS这样的CoW文件系统几乎没有意义。

#1 楼

命令du“递归汇总目录中每个文件的磁盘使用情况”,例如,

du -hs /path/to/directory




-h将获取数字”可读”,例如获得140M而不是143260(以KB为单位)

-s是用于汇总的(否则,您不仅将获得文件夹的大小,而且还将获得文件夹中的所有内容)


使用-h时,可以使用

du -h | sort -h


排序人类可读的值-h上的sort标志将考虑“人类可读”的大小值。


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

du -h --max-depth=1 /path/to/directory


评论


尊重他人。 :)

–myusuf3
2010年8月5日在18:37

我使用du -sh或DOOSH来记住它(注意:命令是相同的,只是出于存储目的而组织命令行标志)

– Marco Ceppi♦
2010年8月5日18:56



du有一个有用的选项,称为--apparent-size。它可用于查找文件或目录的实际大小(而不是其在磁盘上的占用空间),例如,只有4个字符的文本文件将占用大约6个字节,但仍会占用约4K的空间。常规的du -sh输出。但是,如果传递--apparent-size选项,则输出为6。man du说:--apparent-size打印表观大小,而不是磁盘使用情况;尽管外观尺寸通常较小,但由于(稀疏)文件中的孔,内部碎片,间接块,尺寸可能会较大

–跳兔子
16年6月3日在4:45

这也适用于OS X!谢谢,我确实在寻找一种清除本地计算机和服务器上文件的方法,但是自动化方法似乎不起作用。因此,我运行了-hs *,进入最大的目录,发现哪些文件太大...这是一个很好的方法,最好的部分是您无需安装任何东西!绝对值得我赞扬

–开发
16 Sep 14 '17:57



@BandaMuhammadAlHelal我认为有两个原因:舍入(du具有一些特殊的舍入,如果值在所选单位中具有多个位数,则不显示小数),以及经典的1024 vs. 1000前缀问题。 du提供了-B(或--block-size)选项来更改其显示值的单位,或者您可以使用-b而不是-h来获取“原始”值(以字节为单位)。

– Marcel Stimberg
17年5月23日在9:12

#2 楼

最近,我发现了一个很棒的基于ncurses的交互式工具,可以快速为您提供有关目录大小的概述。搜索此类工具已有多年历史。


通过文件层次结构快速向下钻取
,您可以删除例如工具内部的巨大临时文件
非常快

将其视为命令行的猴面包树:

apt-get install ncdu


评论


这绝对是太棒了!像DaisyDisk,用于OSX

– subZero
2014年6月6日19:58



ncdu太棒了!安装后,只需执行ncdu /。您将很快找到系统上最大的文件。在ncdu的控制台界面中,也请按h。它有非常有用的快捷方式

– vlad-ardelean
17-12-12在16:34



#3 楼

这将递归查找大小,并将其放置在每个文件夹名称旁边,并在底部放置总大小,所有格式均为人工格式

du -hsc *


评论


这正是我所追求的..子文件夹及其大小的列表

– Paul Whitehead
11月12日11:29

使用du -hsc * |如果要获取文件夹的排序列表,请排序-hr

– Dzmitry Kulahin
12月16日13:31

#4 楼

享受吧!

du foldername


此处有关该命令的更多信息

评论


是的我更喜欢添加-h来使“人类可读”的文件夹大小。 du -h文件夹名称

– fendiSetiawan
5月14日2:22

#5 楼

以下是我用于打印总计,文件夹和文件大小的内容:

$ du -sch /home/vivek/* | sort -rh


详细信息

 ------------------------------------------------------------
   -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


输出

 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


#6 楼

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.)


#7 楼

答案显然表明,du是查找目录总大小的工具。但是,有两个因素需要考虑:


有时,du输出可能会产生误导,因为它报告了文件系统分配的空间,该空间可能与大小总和不同单个文件。通常,即使您仅在文件系统中存储了一个字符,文件系统也会为该文件分配4096个字节!
由于2的幂和10个单位的幂而导致的输出差异。切换到-hdu将字节数除以2 ^ 10(1024),2 ^ 20(1048576)等,以提供易于阅读的输出。许多人可能更习惯于看到10的幂(例如1K = 1000、1M = 1000000),并对结果感到惊讶。

要查找目录中所有文件大小的总和,以字节为单位,请执行以下操作:

find <dir> -ls | awk '{sum += } END {print sum}'


示例:

$ du -s -B 1
255729664

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


评论


对于大文件夹#1,find-ls-awk将返回错误的值。对于较新的awk,您可以添加--bignum或-M;如果这不是一个选择,请使用find。 -ls | tr -s''| cut -d''-f 7 |粘贴-sd + | bc#2。

– goozez
16年6月29日在20:25

如果使用2的幂是一个问题,则有--si选项:“像-h,但使用1000的幂而不是1024”

–muru
17/12/15在3:25



#8 楼

您可以使用工具Dust:
PS C:\git> dust
   0B       ┌── templates           │                                      █ │   0%
   0B     ┌─┴ git-core              │                                      █ │   0%
   0B   ┌─┴ share                   │                                      █ │   0%
  76B   ├── readme.md               │                                      █ │   0%
 156K   │   ┌── less.exe            │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ │   2%
 2.7M   │   ├── git-remote-https.exe│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█████████████████ │  42%
 3.6M   │   ├── git.exe             │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████████████████████ │  56%
 6.5M   │ ┌─┴ git-core              │███████████████████████████████████████ │ 100%
 6.5M   ├─┴ libexec                 │███████████████████████████████████████ │ 100%
 6.5M ┌─┴ .                         │███████████████████████████████████████ │ 100%

我的示例来自Windows,但也支持Linux和Apple:
https://github.com/bootandy/dust

评论


我喜欢它如何使用单个屏幕显示最大的子目录。

– jfs
11月7日4:51

#9 楼

对于仅可读格式的目录大小,请使用以下命令:

du -hs directoryname


这可能不在正确的部分中,但是可以从命令行尝试:

ls -sh filename


-s是尺寸,而-h是人类可读的。

使用-l来显示在ls列表中,如下所示:

ls -shl


#10 楼

如果所需目录包含许多子目录,请使用以下命令:

$ cd ~/your/target/directory
$ du -csh 



-c,--total产生总计
-s,--summaryize仅显示每个参数的总计
-h,-人类可读格式的人类可读打印尺寸(例如1K 234M 2G)


这将产生当前目录中所有文件/文件夹的整体内存使用总量。

#11 楼

du /foldername是了解文件夹大小的标准命令。最佳实践是通过阅读手册页来找到选项:

man du


使用命令之前,应先阅读手册页(在线)。 >

#12 楼

我认为最好的是:

du -h directory_name | tail -n1


这将仅显示您感兴趣的目录的大小,而不显示任何目录的大小,并且该目录中的文件。

我应该补充一点,如果文件夹的大小很大,那么du将花费更长的时间。您必须耐心等待此命令的生效。像任何其他Unix命令一样,您可以在以下命令前使用time来查找此过程的总时间:

time du -h directory_name | tail -n1


评论


du为此提供了一个选项:-s

–大师
2015年10月4日,11:46