目录之间的总磁盘空间

目录之间的总磁盘空间

我的Linux文件系统中有这种结构:

/文件夹
...子文件夹1
......temp/
...子文件夹2
......temp/
...子文件夹3
......temp/
...子文件夹4
......temp/
...子文件夹5
......temp/

我想获取所有 temp/ 文件夹使用的总磁盘空间。我猜是 df 或 du 的问题,但不知道如何实现。我只需要所有 temp/ 目录的总和,而不是子文件夹中可能存在的其他文件夹或文件的总和。有什么想法吗?

谢谢!!

答案1

您可以使用以下命令获取每个临时目录的大小和总计:

du -csh /folder/*/temp

答案2

我喜欢 Siavash 的解决方案,它提供了磁盘上的总大小(以块增量)。

find以下是使用和 的文件的字节数awk

find /folder -type f -wholename '*/temp/*' -printf '%s\n' | awk '{ total += $1 } END { print "Total:", total }'

答案3

尝试这个:

#!/bin/bash
totalsize=0
for i in $(du -b | grep "/temp$" | cut -f1); do
        totalsize=$((totalsize + i))
done

totalsize=$(echo $totalsize | awk '{sum=$1; hum[1024**3]="Gb";hum[1024**2]="Mb"; hum[1024]="Kb"; for (x=1024**3; x>=1024; x/=1024){ if (sum>=x) { printf "%.2f %s\n",sum/x,hum[x];break }}}')

echo "Total size: $totalsize"

它查找以 /temp 结尾的每个文件夹路径,并仅显示以字节为单位的大小。对于找到的每个大小,将其添加到总数中,然后在打印结果之前,使用 awk 将字节转换为人类可读的格式。

相关内容