我的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 将字节转换为人类可读的格式。