我有一大堆可怕的代码,我在版本控制中进行设置.
我想要一个可以在Linux上运行的命令,以便为我提供在运行时提交和推送的文件的总大小 git add -A && git commit -am 'initial commit'
需要总大小,按文件夹分解也很方便.
然后我将使用它来构建我的忽略,以便在我推升之前我可以将repo变为现实大小
我想我已经回答了我自己的问题:
for f in `git status --porcelain | sed 's#^...##'`; do du -cs $f | head -n 1; done | sort -nr; echo "TOTAL:"; du -cs .
Run Code Online (Sandbox Code Playgroud)
但是我对任何更好的想法或有用的技巧持开放态度.我目前的输出是13GB :)
上面的命令基本上就是那里,它从git状态给出了我的总线,但没有给我总和.我目前正在获取最终所有文件的总数,这是不正确的.我尝试过使用bc但无法使用它
我通过添加一个简单的 awk 语句来调整 edmondscommerce 的答案,该语句对 for 循环的输出求和并打印总和(除以 1024*1024 以转换为 Mb)
for f in `git status --porcelain | sed 's#^...##'`; do du -cs $f | head -n 1; done | sort -nr | awk ' {tot = tot+$1; print } END{ printf("%.2fMb\n",tot/(1024*1024)) }'
Run Code Online (Sandbox Code Playgroud)
请注意,--porcelain 打印相对于 git 存储库根目录的路径名。因此,如果您在子目录中执行此操作,则 du 语句将无法找到这些文件。
(whoppa;我在 SoF 中的第一个答案,愿力与它同在)
| 归档时间: |
|
| 查看次数: |
1067 次 |
| 最近记录: |