Answers:
这就是您要寻找的:
du -sh /*
这意味着什么:
-s 仅给出每个命令行参数的总数。-h用于易于理解的后缀,例如M兆字节和G千兆字节(可选)。/*只需扩展到中的所有目录(和文件)/。
注意:不包含点文件;跑shopt -s dotglob也包括那些。
按大小排序也很有用:
du -sh /* | sort -h
这里:
-h确保sort正确解释人类可读的后缀。shopt -s dotglob用来将它们包括在计数中。
/*,例如./对于当前目录或当前目录./*中的每个项目。
./*/用来仅获取子文件夹,而不是所有项目
du -sh /* | sort -h
sort没有@ c1phr -h,则还需要将其保留du,否则排序将混合成千/兆/兆字节。du -s /* | sort -nr。
我经常需要找到最大的目录,因此要获得包含20个最大目录的排序列表,请执行以下操作:
du -m /some/path | sort -nr | head -n 20
在这种情况下,大小将以兆字节报告。
我喜欢为此使用Ncdu,您可以使用光标来导航和向下钻取它确实运行良好的目录结构。
b用来放入目录中的外壳程序。
现有的答案非常有帮助,也许有些初学者(例如我)也会发现此帮助。
非常基本的循环,但是对我来说,这是其他一些与大小相关的操作的良好起点:
for each in $(ls) ; do du -hs "$each" ; done
与第一个答案非常相似,结果与1.)几乎相同,但是花了一些时间才能理解*与./*在子目录中的区别:
du -sh ./*
for each不起作用,因为它将控制台字符(例如\033[)添加到文件夹列表中
for each。它将无法正常工作
以下du调用应在BSD系统上起作用:
du -d 1 /
du(Ubuntu 10.4)没有-d选择。您在什么系统上?
du -sk /*。我非常讨厌这些-k东西。Linux -h完全是一团糟。
--max-depth
这不容易。该du命令要么显示文件和文件夹(默认),要么仅显示您在命令行上指定的所有项目的大小(选项-s)。
要在Linux上以人类可读的大小获取最大的项目(文件和文件夹),请进行排序:
du -h | sort -h
这会将您埋入大量的小文件中。您可以通过以下方法摆脱它们--threshold:(在我的示例中为1 MB):
du --threshold=1M -h | sort -h
此命令的优点是它包含隐藏的点文件夹(以开头的文件夹.)。
如果您确实只想使用文件夹,则需要使用find它,但这可能会非常非常慢,因为du必须多次扫描许多文件夹:
find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h
请注意,您无法du在没有确定的情况下将目录与不同系统/机器上的目录进行比较,因为它们都共享文件系统的相同块大小。如果您将某些文件从linux计算机同步到nas,并且想自己比较已同步的目录,则这可能很重要。du由于块大小不同,您可能会得到不同的结果。
您可能还想签出xdiskusage。将为您提供相同的信息,但以图形方式显示,并允许进行深入分析(非常有用)。对于KDE甚至Windows,还有其他类似的实用程序。
您可以ls结合使用awk:
ls -al * | awk 'BEGIN {tot=0;} {tot = tot + $5;} END {printf ("%.2fMb\n",tot/1024/1024);}'
的输出通过ls管道传递到awk。awk开始处理数据。标准分隔符是空格。总和变量tot初始化为零;对于所输出的每一行/每一行执行以下语句ls。它只是tot随着大小而增加。$5代表第五列(由输出ls)。最后,我们除以(1024 * 1024)以总和为兆字节。
如果要将其转换为脚本或函数(.bashrc),则还可以根据文件类型使用它来获取某些目录子集的大小。
如果您需要系统范围的信息,kdirstat可能会派上用场!
--total标志是对我有帮助。例如du -sh --total applications/*。askubuntu.com/a/465436/48214