查看哪个目录占用空间,不考虑其他挂载点

查看哪个目录占用空间,不考虑其他挂载点

我经常发现自己不得不清理一些目录,因为它们太满了。我们举/var个例子,这是一个很常见的例子,原因很明显。

为了查看哪些子目录占用了大量空间,我使用了du -sh /var/*。不幸的是,我的 子目录中有一些大量数据/var,这些数据恰好托管在其他分区上/var(例如/var/chroot),这大大减慢了进程。

现在du有一个-x排除其他挂载点的标志。它在执行 时工作正常,du -shx /var但不能执行 ,du -shx /var/*因为*shell 会扩展 ,所以/var/chroot会明确发送到du

我被建议的另一个选择是使用find /var -xdev -mindepth 1 -maxdepth 1 -exec du -sh {} \+但同样,即使 find 没有跟随其他挂载点,它仍然印刷它们并将它们传递给du,因此再次未能实现我的目标。

在我最终编写一个可怕的 bash 函数(或一个 perl/python 程序)来解析dfmount循环之前,是否有人知道一种干净的方法来实现我想要做的事情?

答案1

看起来你需要的是这个:

du -hx --最大深度 1 /var

答案2

我从一位同事那里得到了答案:

du -hx --max-depth=1 /var

成功了。

相关内容