You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在bash/sh中编写脚本比较文件夹的递归总大小?

Bash脚本判断两个文件夹递归总大小是否相等

要可靠获取文件夹的递归总字节数并判断是否相等,可以用du命令的-sb参数配合文本处理工具提取纯字节数,具体实现如下:

核心思路

  • du -sb <目录路径>:-s表示只输出目录的总大小(递归包含所有子文件和子文件夹),-b强制以字节为单位统计,输出格式为[字节数] [目录路径]
  • 用awk '{print $1}'提取输出结果中的第一个字段(纯数字的字节数)

完整脚本示例

# 定义源目录和目标目录路径(可根据实际修改,支持带空格的路径)
source="./source"
dest="./dest"

# 获取两个目录的递归总字节数
sourceSizeInBytes=$(du -sb "$source" | awk '{print $1}')
destSizeInBytes=$(du -sb "$dest" | awk '{print $1}')

# 判断大小是否相等
if [ "$sourceSizeInBytes" -eq "$destSizeInBytes" ]; then
    echo "两个文件夹总大小相等,执行指定操作..."
    # 在这里添加你需要执行的操作
else
    echo "两个文件夹总大小不相等"
fi

注意事项

  • 目录路径如果包含空格或特殊字符,必须用双引号包裹变量,避免解析错误
  • du -sb是POSIX兼容的参数组合,在GNU/Linux、BSD等主流类Unix系统上都能正常工作
  • 对于超大目录,du命令会遍历所有文件,耗时较长,属于正常现象

内容的提问来源于stack exchange,提问作者Kristi Jorgji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:32:35