如何在此git脚本上使用milhar分隔显示文件大小?

如何在此git脚本上使用milhar分隔显示文件大小?,git,Git,在这个问题上,可以使用以下脚本列出存储库大文件: git rev-list --all --objects | \ sed -n $(git rev-list --objects --all | \ cut -f1 -d' ' | \ git cat-file --batch-check | \ grep blob | \ sort -n -k 3 | \ tail -n40 | \ while read hash type size; d

在这个问题上,可以使用以下脚本列出存储库大文件:

git rev-list --all --objects | \
    sed -n $(git rev-list --objects --all | \
    cut -f1 -d' ' | \
    git cat-file --batch-check | \
    grep blob | \
    sort -n -k 3 | \
    tail -n40 | \
    while read hash type size; do 
         echo -n "-e s/$hash/$size/p ";
    done) | \
    sort -n -k1
但is以错误的可读方式输出文件大小,如下所示:

89076 images/screenshots/properties.png
103472 images/screenshots/signals.png
9434202 video/parasite-intro.avi
   89.076 KB - images/screenshots/properties.png
  103.472 KB - images/screenshots/signals.png
9,434.202 KB - video/parasite-intro.avi
我希望它以更合理的方式显示尺寸,如下所示:

89076 images/screenshots/properties.png
103472 images/screenshots/signals.png
9434202 video/parasite-intro.avi
   89.076 KB - images/screenshots/properties.png
  103.472 KB - images/screenshots/signals.png
9,434.202 KB - video/parasite-intro.avi
例如,最后一个9434.202 KB表示9.434 MB或0.9434 GB。但我不确定使用9.434202 KB是否是最好的,也就是说,用点替换逗号,反之亦然

最初,我可以考虑生成整个列表,然后再进行处理。但我认为在生成列表时,这样做已经很好了。因此,不可能预测右侧对正,但是,在没有右侧对正的情况下,可以按如下方式打印列表:

89.076 KB - images/screenshots/properties.png
103.472 KB - images/screenshots/signals.png
9,434.202 KB - video/parasite-intro.avi
我认为打印是由这一行执行的:

echo -n "-e s/$hash/$size/p ";

但是,我不知道如何格式化$size参数。

听起来您想将字节转换为基于1024 KB的kibibytes。这是我偷来的一个awk黑客

在这方面:

git rev-list --all --objects | \
    sed -n $(git rev-list --objects --all | \
    cut -f1 -d' ' | \
    git cat-file --batch-check | \
    grep blob | \
    sort -n -k 3 | \
    tail -n40 | \
    while read hash type size; do
         size_in_kibibytes=$(echo $size | awk '{ foo = $1 / 1024 ; print foo "KiB" }')
         echo -n "-e s/$hash/$size_in_kibibytes/p ";
    done) | \
    sort -n -k1
我相信你可以在上面加上逗号,在KiB前加一个空格,对正等等。希望这能让你开始