快速显示目录中每个子目录大小的方法

快速显示目录中每个子目录大小的方法

我想快速检查哪些目录占用了最多的磁盘空间。

我尝试过du -sh subdir,但在较大的目录上花费了 20 秒以上。

我不确定如何使用此方法一次显示主目录中所有子目录的大小,但恐怕可能需要几分钟......

有没有快速的方法来做到这一点?

我不需要显示文件的大小,只需显示目录。

答案1

样本目录

$ ls -aF
./  ../  .asd/  folder1/  folder2/  list  t1  t2  xyz/

要仅查找文件夹的大小(不包括隐藏文件夹):

$ find -type d -name '[!.]*' -exec du -sh {} + 
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz

如果您最后还需要总计:

$ find -type d -name '[!.]*' -exec du -ch {} + 
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz
16K total

对结果进行排序:

$ find -type d -name '[!.]*' -exec du -sh {} + | sort -h
4.0K    ./folder1
4.0K    ./folder2
8.0K    ./xyz

要反转排序顺序:

$ find -type d -name '[!.]*' -exec du -sh {} + | sort -hr
8.0K    ./xyz
4.0K    ./folder2
4.0K    ./folder1

如果您还需要隐藏目录,请-name '[!.]*'从 find 命令中删除。我不知道有任何其他命令可以比du.用于dffile system disk space usage

用于find -maxdepth 1 -type d -name '[!.]*' -exec du -sh {} +避免显示子文件夹

答案2

使用包ncdu.你可以通过安装它sudo apt-get install ncdu
在服务器上,您可以将其与选项一起使用ncdu -q -x(安静模式和忽略安装目录)。

Ncdu 与 du/df

ncdu的界面是使用ncurses构建的,并且是交互式的。 Ncdu 与 df 或 du 不同。 Ncdu 只执行报告目录使用的空间并向下钻取的一项任务。另一方面,df 命令报告不同存储设备使用的空间。

所以 ncdu 是一个强大的工具来监视、检查和分析 Linux 系统上的磁盘空间使用情况

答案3

所有文件夹占用相同的空间量,即 4096 字节。您不想知道文件夹的大小,而是想知道其中内容的大小。这需要计数,而计数又需要时间。

du默认情况下计算目录大小。因此,要获取它的尺寸:

cd && du

或者

du ~

请参阅 参考资料 了解man du更多选项。

答案4

正如其他人所说,这只是一个缓慢的过程。我们有多用户计算机,最糟糕的是磁盘空间不足并且几个人du同时启动。因此,我们使用磁盘使用情况的缓存视图(我们每天运行两次)。那里有很多,但从视觉角度来看我最喜欢的是duc

http://duc.zevv.nl/

索引是从 cron 作业生成的,如下所示 - 该作业指定索引中的 6 个层次结构

30 5,12 * * * /usr/local/bin/duc index -x -m 6 -d /mydisk/ducdb_1.4.sqlite /mydisk/users >/dev/null 2>&1

然后我们使用Web前端( duc cgi)来查看索引。它非常光滑且美观。非常感谢作者 Ico Doornekamp 和 John Stoffel

相关内容