Linux
在不考慮其他掛載點的情況下查看哪個目錄佔用空間
我經常發現自己不得不清理一些目錄,因為它們太滿了。讓我們
/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
,因此再次未能實現我的目標。在我最終編寫一個解析
df
或mount
循環的可怕 bash 函式(或 perl/python 程序)之前,有沒有人知道一種干淨的方法來實現我想要做的事情?
看起來你需要的是這樣的:
du -hx --max-depth 1 / var
我從一位同事那裡得到了答案:
du -hx --max-depth=1 /var
成功了。