我已经尝试过这些,但是它们不执行我想要的操作:
ls -l
(仅显示目录中单个文件的大小),也df -h
(仅显示目录中的可用空间和已用空间)磁盘。#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个单位的幂而导致的输出差异。切换到
-h
的du
将字节数除以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
评论
相关:如何列出目录中文件和目录的递归文件大小?跨站点重复:如何在命令行上获取目录的大小?
友情提醒,它可能对像BTRFS这样的CoW文件系统几乎没有意义。