GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ermitteln Sie die Gesamtgröße von nicht festgeschriebenen oder nicht nachverfolgten Dateien in Git

Ich habe die Antwort von edmondscommerce angepasst, indem ich eine einfache awk-Anweisung hinzugefügt habe, die die Ausgabe der for-Schleife summiert und die Summe ausgibt (geteilt durch 1024*1024, um sie in Mb umzuwandeln)

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)) }' 

Beachten Sie, dass --porcelain Pfadnamen relativ zum Stammverzeichnis der Git-Repositorys ausgibt. Wenn Sie dies also in einem Unterverzeichnis tun, kann die du-Anweisung die Dateien nicht finden..

(whoppa; meine erste Antwort in SoF, möge die Macht mit ihr sein)


Ich habe eine modifizierte Version davon verwendet, weil ich Dateien mit Leerzeichen hatte, die es zum Absturz brachten. Ich war mir auch bei den Größenberechnungen unsicher und habe einen unnützen head entfernt :

git status --porcelain | sed 's/^...//;s/^"//;s/"$//' | while read path; do
    du -bs "$path" ;
done | sort -n | awk ' {tot = tot+$1; print } END { printf("%.2fMB\n",tot/(1024*1024)) }'

Ich bevorzuge while da es etwas sicherer ist als for :Es kann immer noch unangenehme Dinge mit Dateien anstellen, die Zeilenumbrüche enthalten, also wünschte ich, es gäbe einen, um null zu übergeben -separate Dateien dennoch in der Lage sein, nach dem Status zu suchen, aber ich konnte keinen netten Weg dafür finden.


Ich glaube, ich habe meine eigene Frage beantwortet:

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

Ich bin jedoch offen für bessere Ideen oder nützliche Tricks. Meine aktuelle Ausgabe beträgt 13 GB :)

Der obige Befehl ist im Grunde da, er gibt mir die Gesamtsumme Zeile für Zeile aus dem Git-Status, aber nicht die Gesamtsumme. Ich bekomme derzeit die Summe aller Dateien am Ende, was nicht korrekt ist. Ich habe versucht, bc zu verwenden konnte es aber nicht zum Laufen bringen


Linux
  1. Größte Dateien rekursiv finden?

  2. Wie finde ich unter Linux alle Dateien, die größer als 1 GB sind?

  3. Listen Sie die Gesamtgröße der Festplattennutzung von Dateien nach Verzeichnissen / Ordnern in Linux auf

  4. Kurzer Befehl, um die Gesamtgröße von Dateien zu finden, die mit einem Platzhalter übereinstimmen

  5. Wie zähle ich die Gesamtzahl der Zeilen der gefundenen Dateien?

So finden Sie Dateien unter Linux

Finden Sie große Dateien in Linux

So ermitteln Sie die Gesamtgröße eines Verzeichnisses in Linux

So finden Sie Dateien in Debian

wie du du verwendest, um Dateien anzuzeigen, die eine Schwellenwertgröße überschreiten

Holen Sie sich die Gesamtdateigröße aus einer Datei, die eine Dateiliste enthält