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

如何在Shell脚本中提取ROS2 Bag的大小信息(无需ROS1)

提取ROS2 Bag文件大小的Shell脚本方法

ROS2的ros2 bag info确实没有ROS1里的-y/-k参数,但可以通过解析输出内容来提取大小,给你两种可靠的方法:

方法1:解析默认文本输出

ros2 bag info的默认输出里会明确列出"Total size"行,直接用grep+awk就能提取数值:

#!/bin/bash
# 传入Bag文件路径作为脚本参数
BAG_FILE="$1"

# 提取字节数
BAG_SIZE=$(ros2 bag info "$BAG_FILE" | grep "Total size:" | awk '{print $3}')

# 输出结果
echo "Bag文件大小:$BAG_SIZE 字节"

原理:用grep定位到包含"Total size:"的行,再用awk取第三个字段(对应数值部分)。

方法2:用JSON输出+jq工具(更稳定)

ROS2支持以JSON格式输出bag信息,配合jq工具能精准提取字段,避免文本格式变动导致的失效:

首先确保系统装了jq(Debian/Ubuntu系可以跑sudo apt install jq安装),然后用下面的脚本:

#!/bin/bash
BAG_FILE="$1"

# 从JSON输出中提取size字段
BAG_SIZE=$(ros2 bag info --output json "$BAG_FILE" | jq '.size')

echo "Bag文件大小:$BAG_SIZE 字节"

如果需要转换单位(比如转成MB),可以加一段计算:

# 转换为MB(保留两位小数)
BAG_SIZE_MB=$(echo "scale=2; $BAG_SIZE / 1024 / 1024" | bc)
echo "Bag文件大小:$BAG_SIZE_MB MB"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:22:49