ディレクトリサイズを計算するスクリプトを書き、サイズが10GB未満で、2GBを超える場合は何らかのアクションを実行しようとしています。自分のフォルダ名をどこに記載する必要がありますか?
# 10GB
SIZE="1074747474"
# check the current size
CHECK="`du /data/sflow_log/`"
if [ "$CHECK" -gt "$SIZE" ]; then
echo "DONE"
fi
できるよ:
du -h your_directory
これにより、ターゲットディレクトリのサイズがわかります。
簡単な出力が欲しいなら、du -hcs your_directory
がいいです。
サブフォルダではなくフォルダサイズだけを表示したい場合は、次のようにします。
du -hs /path/to/directory
更新:
du
は使用されているディスク容量を示しています。ファイルサイズではありません。
実際のファイルサイズの合計を確認したい場合は--apparent-size
を使用できます。
--apparent-size
print apparent sizes, rather than disk usage; although the apparent size is usually smaller, it may be larger due to holes in ('sparse')
files, internal fragmentation, indirect blocks, and the like
そしてもちろん、スクリプト内に-h
(人間が読める形式)オプションは必要ありません。
代わりに、スクリプト内での比較を容易にするために-b
を使用できます。
しかし-b
は--apparent-size
を単独で適用することに注意してください。そしてそれはあなたが必要とするものではないかもしれません。
-b, --bytes
equivalent to '--apparent-size --block-size=1'
だから私は思う、あなたは--block-size
か-B
を使うべきです
#!/bin/bash
SIZE=$(du -B 1 /path/to/directory | cut -f 1 -d " ")
# 2GB = 2147483648 bytes
# 10GB = 10737418240 bytes
if [[ $SIZE -gt 2147483648 && $SIZE -lt 10737418240 ]]; then
echo 'Condition returned True'
fi
要約(-s
)とバイト(-b
)を使用してください。要約の最初のフィールドはcut
で切り取ることができます。すべてを一緒に入れて:
CHECK=$(du -sb /data/sflow_log | cut -f1)
ディレクトリのサイズを取得するには、それ以上のことは必要ありません。
du --max-depth=0 ./directory
出力は次のようになります
5234232 ./directory
フォルダの合計サイズを、おそらくMBまたはGB形式で表示するだけの場合は、次のスクリプトを試してください。
$du -s --block-size=M /path/to/your/directory/
ディレクトリ内のすべてのディレクトリのサイズを確認するには、次のようにします。
du -h --max-depth=1
# 10GB
SIZE="10"
# check the current size
CHECK="`du -hs /media/662499e1-b699-19ad-57b3-acb127aa5a2b/Aufnahmen`"
CHECK=${CHECK%G*}
echo "Current Foldersize: $CHECK GB"
if (( $(echo "$CHECK > $SIZE" |bc -l) )); then
echo "Folder is bigger than $SIZE GB"
else
echo "Folder is smaller than $SIZE GB"
fi
うまくいけば、.bashrc
または.bash_profile
にエイリアスを作成することもできます。
function dsize()
{
dir=$(pwd)
if [ "$1" != "" ]; then
dir=$1
fi
echo $(du -hs $dir)
}
これは現在のディレクトリまたはあなたが引数として渡したディレクトリのサイズを表示します。