401

ディレクトリ サイズを計算するスクリプトを作成しようとしています。サイズが 10 GB 未満で、2 GB を超える場合は何らかのアクションを実行します。フォルダ名はどこに記載する必要がありますか?

# 10GB
SIZE="1074747474"

# check the current size
CHECK="`du /data/sflow_log/`"
if [ "$CHECK" -gt "$SIZE" ]; then
  echo "DONE"
fi
4

8 に答える 8

163

サブフォルダーではなく、フォルダーのサイズのみを表示したい場合は、次を使用できます。

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
于 2014-03-10T08:20:19.033 に答える
14

フォルダの合計サイズをおそらく MB または GB 形式で表示したいだけの場合は、以下のスクリプトを試してください。

$du -s --block-size=M /path/to/your/directory/
于 2014-06-20T14:32:36.977 に答える
5
# 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
于 2016-01-31T13:25:57.893 に答える