web-dev-qa-db-ja.com

Bashでフォルダサイズを確認する

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

# 10GB
SIZE="1074747474"

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

できるよ:

du -h your_directory

これにより、ターゲットディレクトリのサイズがわかります。

簡単な出力が欲しいなら、du -hcs your_directoryがいいです。

508
Mingyu

サブフォルダではなくフォルダサイズだけを表示したい場合は、次のようにします。

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
123
Taxellool

要約(-s)とバイト(-b)を使用してください。要約の最初のフィールドはcutで切り取ることができます。すべてを一緒に入れて:

CHECK=$(du -sb /data/sflow_log | cut -f1)
23
paddy

ディレクトリのサイズを取得するには、それ以上のことは必要ありません。

du --max-depth=0 ./directory

出力は次のようになります

5234232       ./directory
22
siliconrockstar

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

$du -s --block-size=M /path/to/your/directory/
11
Shivraaz

ディレクトリ内のすべてのディレクトリのサイズを確認するには、次のようにします。

du -h --max-depth=1

4
# 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
3
Gutz-Pilz

うまくいけば、.bashrcまたは.bash_profileにエイリアスを作成することもできます。

function dsize()
{
    dir=$(pwd)
    if [ "$1" != "" ]; then
            dir=$1
    fi
    echo $(du -hs $dir)
}

これは現在のディレクトリまたはあなたが引数として渡したディレクトリのサイズを表示します。

3
Vignesh Raja