获取 Git LFS 总大小

获取 Git LFS 总大小

如何获取 Git LFS 文件的总大小?

我可以通过以下方式获取 LFS 文件列表git lfs ls-files --size

b1d5dd29dd - file1.zip (1.42 GB)
27d3073f43 - file2.zip (120 MB)
cacd6dbfe3 - folder/file3.zip (110.2 MB)
295442cd34 - "folder/(120 MB).zip" (110.2 MB)
680bb2ab19 * test.txt (5 B)

笔记:两者都-*使用

我可以使用以下方法过滤以仅获取尺寸git lfs ls-files --size | awk -F " " '{ print $(NF-1) $NF }' | tr -d '()'

1.42GB
120MB
110.2MB
110.2MB
5B

我不知道这些是 1000 (GB) 还是 1024 (GiB) 的幂,因此可以假设较大的幂(1.00 GB = 1024 MB)。

如何获得总计 1.88 GiB ( (1.42) * 1024^3 + (120 + 110.2 + 110.2) * 1024^2 + (5) * 1 = 1881648665.48 bytes = 1.88 GiB)?

另一种无需解析 Git 等效项即可获取总大小的方法ls也是可以接受的,最好使用普通的 Bash 和 GNU 工具。

答案1

我找不到任何专门用于打印字节大小而不是人类可读大小的选项,但看起来该--debug选项可以做到这一点。不过,输出--debug是完全不同的,根据手册页“确切的格式可能随时改变”,所以请记住这一点。

然而,对于以字节为单位的大小,我们可以这样做:

git lfs ls-files --debug | awk -F: '$1~/size/{t+=$2}END{printf "Total is: %dGB\n", t/1024/1024/1024}'

这里 awk 将对变量中“size”的每个值求和t,在读取所有行后,它将打印出 t/1024/1024/1024 或 GB 的值,为 TB 添加另一个 /1024 或为 MB 删除一个,等等。

(注意,我不认识“公制”数据大小的存在,因此不认识“GiB”、“MiB”等)

相关内容