如何在此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前加一个空格,对正等等。希望这能让你开始