やってみたら
du -s -h -x /*
/の直下にマウントされているすべてのファイルシステム(実数および疑似)を調べようとします。/dev、/ proc、/ sys、/ run、および/ home(/ homeは追加のパーティションにあります)。
*のシェル拡張に由来すると思います。duにこれらのマウントポイントを明示的に含むパラメータリストを与えます。
マウントポイントがパラメータリストに含まれている場合でも、マウントされたファイルシステムを検査しないようにする方法はありますか?
/のすべてのサブディレクトリを入力したくないのは、パラメータリストに含まれないようにするためです。
mountpoint
を使用してそれをフィルタリングすることもできます(システムで利用可能な場合):
for a in /*; do mountpoint -q -- "$a" || du -s -h -x "$a"; done
mountpoint
が使用できないがstat
が使用できる場合(stat
はまだPOSIXではありませんが、より一般的である可能性があります)、stat
を比較する必要があります。手動で出力:
rootdevice="$(stat -c %D /)"
for a in /*; do [ "$rootdevice" = "$(stat -c %D -- "$a")" ] && du -s -h -x "$a"; done
私はあなたが正しいと思います。あなたは実際にdu /dev
、du /sys
、du /usr
、du /home
したがって、「-x」オプションは無意味です。
ループしてみませんか?例えば。 find / -maxdepth 1 | egrep -v home|media
は、ホームとメディアを除くすべてのディレクトリを一覧表示します。次に、出力をwhile
ループにパイプしてdu
に送ることができます。
find / -maxdepth 1 | egrep -v home|media | while read f; do
du -s -h -x "$f";
done
du
コマンドで*
を使用しません。次のようなものを使用します。
du -hx --max-depth=1| sort -h
または
du -hx / --max-depth=1| sort -h