ディレクトリ サイズを計算するスクリプトを作成しようとしています。サイズが 10 GB 未満で、2 GB を超える場合は何らかのアクションを実行します。フォルダ名はどこに記載する必要がありますか?
# 10GB
SIZE="1074747474"
# check the current size
CHECK="`du /data/sflow_log/`"
if [ "$CHECK" -gt "$SIZE" ]; then
echo "DONE"
fi
サブフォルダーではなく、フォルダーのサイズのみを表示したい場合は、次を使用できます。
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
フォルダの合計サイズをおそらく MB または GB 形式で表示したいだけの場合は、以下のスクリプトを試してください。
$du -s --block-size=M /path/to/your/directory/
# 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