我正在尝试编写一个脚本,该脚本将计算目录大小,如果大小小于10GB,然后大于2GB,请执行一些操作。我在哪里需要提及我的文件夹名称?

# 10GB
SIZE="1074747474"

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


评论

如果要对其进行排序:serverfault.com/questions/62411/…

相关问题:stackoverflow.com/q/1241801/5447906、unix.stackexchange.com/q/185764/152606

由于这是一个很普遍的问题-如果任何初学者都遇到了这个问题的答案,并且想了解更多关于heck du是什么以及每个人如何知道所有这些命令的信息:您可以在终端中键入man du来在其中查找du命令。手册。这将显示一个您可以查看的输出,并将汇总所有建议使用的答案,例如-h,-c,-s,-b,-B,-apparent-size等。然后,您可以自己决定如何最好地将du用于您的特定用例。

#1 楼

您可以执行以下操作:

du -h your_directory


,它将为您提供目标目录的大小。 。

评论


尝试获取脚本值时,您不需要人类可读的数字。

–paddy
13年5月21日在4:17

没有指定目录路径,它将默认为当前工作目录。所以du -hs == du -hs ..

–爵士乐
2015年4月20日3:00,

同时签出:du | sort -n它将按其大小对目录进行排序

–优化
16年1月28日在4:55



du -hcs dir_name / *包含子文件夹

–优化
16年8月1日在20:40

du -h |尾巴-1?

–亚历山大·米尔斯(Alexander Mills)
16年1月1日在11:00

#2 楼

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

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

评论


我知道已经有几年了,但是您是否愿意在条件语句中解释一下regex和BASH_REMATCH的目的是什么? (或者提供一些有关这些变量/命令/格式的用法的链接)我希望代码仅获取变量中文件的大小,然后直接与10 gb进行比较,还有哪些其他作用?

–诺迪科
16年5月20日在14:07

@Nordico是的。不需要正则表达式和BASH_REMATCH,所以我更新了答案。

–紫杉醇
16-6-29在7:54



#3 楼

使用摘要(-s)和字节(-b)。您可以使用cut剪切摘要的第一个字段。全部放在一起:

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


评论


我是Shell脚本的新手。 du命令的输出包括目录名称。我无法仅获得数字部分。 “切”在您的答案中解开了谜团!

– simpleDev
18年8月17日在15:34

#4 楼

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

du --max-depth=0 ./directory


输出类似于

5234232       ./directory


评论


--max-depth对于有效控制输出非常有用!例如,要很好地了解目录中发生的事情:du -h --max-depth = 1

– Matanster
17 Dec 8'在10:24



#5 楼

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

du -h --max-depth=1

评论


或在Android上使用du -h -d 1。

– Jiggunjer
19年3月12日在9:02

和OSX上的du -h -d 1

– Mike W
19年7月25日在14:48

#6 楼

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

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


评论


在os x上,标志是-g表示1 GB,而-m表示1 MB。通过满都

– Sgnl
17年12月30日,1:13

#7 楼

# 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


#8 楼

如果有帮助,您还可以在.bashrc.bash_profile中创建别名。 。

评论


这是一个很好的答案

– d8aninja
18年7月18日在14:46