Linux

在不考慮其他掛載點的情況下查看哪個目錄佔用空間

  • October 6, 2010

我經常發現自己不得不清理一些目錄,因為它們太滿了。讓我們/var舉個例子,因為它是一個常見的例子,原因很明顯。

為了查看哪些子目錄佔用大量空間,我使用du -sh /var/*. 不幸的是,我在 的子目錄中有一些巨大的數據/var,這些數據恰好託管在/var(例如/var/chroot)以外的其他分區上,並且大大減慢了這個過程。

現在du有一個-x不包括其他掛載點的標誌。它在做 adu -shx /var但不是 with時工作正常,du -shx /var/*因為*它被 shell 擴展,所以/var/chroot被明確地發送到du.

我提出的另一個選項是使用find /var -xdev -mindepth 1 -maxdepth 1 -exec du -sh {} \+,但同樣,即使 find 不遵循其他掛載點,它仍然會列印它們並將它們傳遞給du,因此再次未能實現我的目標。

在我最終編寫一個解析dfmount循環的可怕 bash 函式(或 perl/python 程序)之前,有沒有人知道一種干淨的方法來實現我想要做的事情?

看起來你需要的是這樣的:

du -hx --max-depth 1 / var

我從一位同事那裡得到了答案:

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

成功了。

引用自:https://serverfault.com/questions/188208