GNU/Linux >> Linux Esercitazione >  >> Linux

Trova la dimensione totale dei file senza commit o non tracciati in git

Ho adattato la risposta di edmondscommerce aggiungendo una semplice istruzione awk che somma l'output del ciclo for e stampa la somma (divisa per 1024*1024 per convertirla in 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)) }' 

Si noti che --porcelain stampa i percorsi relativi alla radice dei repository git. Quindi, se lo fai in una sottodirectory, l'istruzione du non sarà in grado di trovare i file..

(whoppa; la mia prima risposta in SoF, che la forza sia con essa)


Ho usato una versione modificata di questo, perché avevo file con spazi che lo facevano andare in crash. Inoltre, non ero sicuro dei calcoli delle dimensioni e ho rimosso un inutile head :

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

Preferisco usare while poiché è leggermente più sicuro di for :può ancora fare cose brutte con i file che contengono newline, quindi vorrei che ci fosse un null da superare -separare i file ma essere ancora in grado di eseguire il grep per lo stato, ma non sono riuscito a trovare un modo carino per farlo.


Penso di aver risposto alla mia stessa domanda:

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

Tuttavia sono aperto a idee migliori o trucchi utili. Il mio output attuale è di 13 GB :)

Il comando sopra è praticamente lì, mi dà il totale riga per riga dallo stato git ma non mi dà la somma totale. Attualmente sto ricevendo il totale di tutti i file alla fine che non è corretto. Ho provato a usare bc ma non sono riuscito a farlo funzionare


Linux
  1. Come cercare i file per dimensione ed estensione?

  2. Trova i file più grandi in modo ricorsivo?

  3. Comandi di ricerca di Linux

  4. Come trovare tutti i file di dimensioni superiori a 1 GB in Linux?

  5. Trova e copia i file

Come trovare file in Linux

Trova file di grandi dimensioni in Linux

Come trovare la dimensione totale di una directory in Linux

Elenca le dimensioni totali di utilizzo del disco dei file per directory/cartelle in Linux

Come trovare file in Debian

come usare du per vedere i file più grandi di una dimensione di soglia