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

# 10GB
SIZE="1074747474"

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

当前回答

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

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

其他回答

获取目录的大小,仅此而已:

du --max-depth=0 ./directory

输出如下所示

5234232       ./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

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

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

如果你只是想查看文件夹大小,而不是子文件夹,你可以使用:

du -hs /path/to/directory

更新:

你应该知道du显示的是已使用的磁盘空间;而不是文件大小。

如果你想查看实际文件大小的总和,你可以使用——-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单独应用——-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

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

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