私はdf -hを使用して、人間が読めるディスク使用量を出力していました。何がそんなに多くを占めているのかを知りたいのですが。たとえば、このコマンドをパイプして1GBより大きいサイズのファイルを出力する方法はありますか?他のアイデア?
ありがとう
私はこれをよく使います。
du -kscx *
実行には少し時間がかかる場合がありますが、ディスク領域がどこで使用されているかがわかります。
次の場所にあるncdu
ユーティリティを試してみてください: http://dev.yorhel.nl/ncd
ファイルシステムまたはディレクトリツリーの内容をすばやく合計し、結果をサイズ順に並べて出力します。これは、対話的にドリルダウンしてドライブスペースを消費しているものを確認するのに非常に便利な方法です。
さらに、一部のdu
の組み合わせよりも高速になる場合があります。
典型的な出力は次のようになります。
ncdu 1.7 ~ Use the arrow keys to navigate, press ? for help
--- /data ----------------------------------------------------------------------------------------------------------
163.3GiB [##########] /docimages
84.4GiB [##### ] /data
82.0GiB [##### ] /sldata
56.2GiB [### ] /prt
40.1GiB [## ] /slisam
30.8GiB [# ] /isam
18.3GiB [# ] /mail
10.2GiB [ ] /export
3.9GiB [ ] /edi
1.7GiB [ ] /io
1.2GiB [ ] /dmt
896.7MiB [ ] /src
821.5MiB [ ] /upload
691.1MiB [ ] /client
686.8MiB [ ] /cocoon
542.5MiB [ ] /hist
358.1MiB [ ] /savsrc
228.9MiB [ ] /help
108.1MiB [ ] /savbin
101.2MiB [ ] /dm
40.7MiB [ ] /download
Findコマンドを使用できます。例:
find /home/ -size +1073700000c -print
私自身が使用しています
du -c --max-depth = 4/dir |並べ替え-n
これは、ディレクトリとそのサブディレクトリが使用する最大4深さまでのスペースの量を返します。sort -n
は、最大のものを最後に配置します。
sort
の新しいバージョンは「人間が読める」サイズを処理できるため、より読みやすいサイズを使用できます
du -hc --max-depth=4 /dir | sort -h
私は多くのスペースをとっているものを特定する必要があったので多くの時間を費やしているので、上の小さな職業を検索するためにこの小さなスクリプトを書きました特定のデバイス(引数なしで、これは現在のディレクトリを参照し、> 256Mbディレクトリエントリを検索します):
_#!/bin/bash
humansize() {
local _c=$1 _i=0 _a=(b K M G T P)
while [ ${#_c} -gt 3 ] ;do
((_i++))
_c=$((_c>>10))
done
_c=$(( ( $1*1000 ) >> ( 10*_i ) ))
printf ${2+-v} $2 "%.2f%s" ${_c:0:${#_c}-3}.${_c:${#_c}-3} ${_a[_i]}
}
export device=$(stat -c %d "${1:-.}")
export minsize=${2:-$((256*1024**2))}
rdu() {
local _dir="$1" _spc="$2" _crt _siz _str
while read _crt;do
if [ $(stat -c %d "$_crt") -eq $device ];then
_siz=($(du -xbs "$_crt"))
if [ $_siz -gt $minsize ];then
humansize $_siz _str
printf "%s%12s%14s_%s\n" "$_spc" "$_str" \\ "${_crt##*/}"
[ $d "$_crt" ] && rdu "$_crt" " $_spc"
fi
fi
done < <(
find "$_dir" -mindepth 1 -maxdepth 1 -print
)
}
rdu "${1:-.}"
_
使用例:
_./rdu.sh /usr 100000000
1.53G \_lib
143.52M \_i386-linux-gnu
348.16M \_x86_64-linux-gnu
107.80M \_jvm
100.20M \_Java-6-openjdk-AMD64
100.17M \_jre
99.65M \_lib
306.63M \_libreoffice
271.75M \_program
107.98M \_chromium
99.57M \_lib32
452.47M \_bin
2.50G \_share
139.63M \_texlive
129.74M \_texmf-dist
478.36M \_locale
124.49M \_icons
878.09M \_doc
364.02M \_texlive-latex-extra-doc
359.36M \_latex
_
少しチェック:
_du -bs /usr/share/texlive/texmf-dist
136045774 /usr/share/texlive/texmf-dist
echo 136045774/1024^2 | bc -l
129.74336051940917968750
_
注意:_-b
_の代わりに_-k
_を使用してdu
に使用されたバイトのみを要約し、有効な予約スペースは要約しないように指示します(512バイトのブロックごと)。ブロックサイズについて作業するには、_du -xbs ...
_を_du -xks
_で変更し、b
を_a=(K M G T P)
で省略し、引数のサイズを1024で除算する必要があります。
...デフォルトでblocksサイズを使用する修正バージョンがあります(私自身は保持します)が、最初の引数として_-b
_を受け入れますバイト計算:
いくつかの作業の後、新しいバージョンがたくさんありますquiickerで、出力はサイズの降順で並べ替えられています。
_#!/bin/bash
if [ "$1" == "-b" ] ;then
shift
export units=(b K M G T P)
export duargs="-xbs"
export minsize=${2:-$((256*1024**2))}
else
export units=(K M G T P)
export duargs="-xks"
export minsize=${2:-$((256*1024))}
fi
humansize() {
local _c=$1 _i=0
while [ ${#_c} -gt 3 ] ;do
((_i++))
_c=$((_c>>10))
done
_c=$(( ( $1*1000 ) >> ( 10*_i ) ))
printf ${2+-v} $2 "%.2f%s" ${_c:0:${#_c}-3}.${_c:${#_c}-3} ${units[_i]}
}
export device=$(stat -c %d "${1:-.}")
rdu() {
local _dir="$1" _spc="$2" _crt _siz _str
while read _siz _crt;do
if [ $_siz -gt $minsize ];then
humansize $_siz _str
printf "%s%12s%14s_%s\n" "$_spc" "$_str" \\ "${_crt##*/}"
[ -d "$_crt" ] &&
[ $(stat -c %d "$_crt") -eq $device ] &&
rdu "$_crt" " $_spc"
fi
done < <(
find "$_dir" -mindepth 1 -maxdepth 1 -xdev \
\( -type f -o -type d \) -printf "%D;%p\n" |
sed -ne "s/^${device};//p" |
tr \\n \\0 |
xargs -0 du $duargs |
sort -nr
)
}
rdu "${1:-.}"
_
人間が読めるサイズ:
du -hscx *
現在のフォルダー内の最大の上位20ディレクトリを表示するには、次のワンライナーを使用します。
du -ah . | sort -rh | head -20
または:
du -a . | sort -rn | head -20
現在のディレクトリの上位20ファイル(再帰的に):
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
または人間が読めるサイズ:
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
OSX/BSDで正しく機能する2番目のコマンド(
sort
には-h
がないため)、sort
をcoreutils
からインストールする必要があります。次に、binフォルダーをPATH
に追加します。
したがって、これらのエイリアスはrcファイルに含めると便利です(必要なときはいつでも)。
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'