我试图写一个脚本,将计算一个目录大小,如果大小小于10GB,然后大于2GB做一些操作。我需要在哪里提到我的文件夹名称?

# 10GB
SIZE="1074747474"

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

当前回答

# 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)
}

这将打印当前目录或已作为参数传递的目录的大小。

如果您只想查看文件夹的聚合大小,可能是MB或GB格式,请尝试下面的脚本

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

要检查目录中所有目录的大小,您可以使用:

du -h --max-depth=1

使用summary (-s)和bytes (-b)。您可以使用cut来切割摘要的第一个字段。把它们放在一起:

CHECK=$(du -sb /data/sflow_log | cut -f1)
# 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