我正在运行下面的代码:
git rev-list --objects --all |
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' %(id)' |
sed -n 's/^blob //p' |
sort --numeric-sort --key=2 |
gcut -c 1-12,41- |
$(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest
在 git 存储库中输出大数据文件。输出看起来像这样:
ne3ee2e43e1x 1.0MiB path/to/large/files.png ID
我想使用分号作为命令中调用的每个数据点之间的分隔符。所以预期的输出将是这样的:
ne3ee2e43e1x; 1.0MiB; path/to/large/files.png; ID
更新:
根据马库斯的回答尝试执行以下操作。
git rev-list --objects --all | git cat-file --batch-check='%(objecttype);%(objectname);%(objectsize);%(rest)' | sed -n 's/^blob //p' | awk '$2 >= 2^20' | sort --numeric-sort --key=2 | gcut -c 1-12,41- |$(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=1 --round=nearest
但这最终并没有复制任何东西。
答案1
您可以使用参数自行指定输出格式--batch-check
。因此,在格式字符串中添加分号!请参阅“批量输出”部分git cat-file
手册页。
objecttype
另外,如果您要处理的 blob 输出只是使用 sed 删除它,为什么还要向 git 询问呢?