Encuentra el tamaño total de los files sin editar o sin seguimiento en git

Tengo un gran montón de código horrible y lo estoy configurando en control de versiones.

Me gustaría un command que pueda ejecutar en Linux para darme el tamaño total de los files que se comprometerían y presionaré si ejecutara git add -A && git commit -am 'initial commit'

Se necesita el tamaño total, también sería útil un desglose por carpeta.

Luego usaré esto para build mis ignorados para que pueda get el repository a un tamaño realist antes de empujarlo hacia arriba

Creo que he respondido a mi propia pregunta:

 for f in `git status --porcelain | sed 's#^...##'`; do du -cs $f | head -n 1; done | sort -nr; echo "TOTAL:"; du -cs . 

Sin embargo, estoy abierto a mejores ideas o trucos útiles. Mi salida actual es 13GB 🙂


El command anterior está básicamente allí, me da el total línea por línea del estado de git, pero no me da la sum total. Actualmente estoy obteniendo el total de todos los files al final, lo que no es correcto. Intenté usar bc pero no pude hacerlo funcionar

Adapté la respuesta de edmondscommerce agregando una simple instrucción awk que sum la salida del bucle for e imprime la sum (dividido por 1024 * 1024 para convertirlo a 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)) }' 

Tenga en count que –porcelain imprime routes relacionadas con la raíz de los repositorys de git. Entonces, si haces esto en un subdirectory, la sentencia du no podrá encontrar los files.

(whoppa; mi primera respuesta en SoF, que la fuerza esté con eso)

Como solo está agregando todo, no veo ningún motivo para ir a través de Git. Simplemente use las herramientas comunes de Unix: du , find , & c.