私たちの環境には、すべてのユーザーのホームディレクトリを含むNFSマウントがあります。
ホームディレクトリのサイズが10Gを超えるユーザーを見つけて通知を送信したいと思います。私は試した:
du -sh * | sort -hr
これは魅力的ですが、サイズが10Gを超えるディレクトリを抽出するコマンドは見つかりません。
試してみましたがfind . -size +10G -exec ls -lhS {} \;
成功しませんでした。
サイズが10Gを超えるディレクトリを検索または抽出する最良の方法は何ですか?
答え1
これはトリックを行う必要があります。
最初の列(サイズ)が10 GBを超えると、2番目の列(ディレクトリ名)が出力されます。
du -sk * | awk '$1 > 10485760 { print $2 }'
または、要求に応じて、以下のように人間が読める形式で提供されます。正規表現は、列1がG(ギガバイト)で終わることを保証し、substr部分は列1から最後の文字を削除し、10より大きいことを確認します。
du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 10 { print $0 }'
例:
du -sh *
2.5G steve
du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 1 { print $0 }'
2.5G steve
du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 3 { print $0 }'
(no output)