Utilizzo di --exclude con il comando du


67

Questo è probabilmente qualcosa di essenziale ma non sono in grado di farlo funzionare. Sto cercando di usare DU per ottenere una dimensione totale di file meno alcune directory. Devo escludere una directory specifica chiamata uploadsma non tutte le directory chiamate uploads. Ad esempio, la mia struttura dei file è un po 'così:

/store
  /uploads
    /junk_to_ignore
    /more_junk_to_ignore
  /user_one
    /uploads
  /user_two

Posso eseguire il seguente comando:

du -ch --exclude=uploads* 

e mi dà la dimensione del file meno tutte le directory "uploads". Tuttavia, nel tentativo di escludere determinate directory (e tutte le sue sottodirectory) fallisco. Ho provato varianti di:

du -ch --exclude=./uploads*
du -ch --exclude='/full/path/to/uploads/*'

ma non riesco a capirlo. Come posso escludere una directory specifica?


username: store$ du -ch --exclude=./uploadsha funzionato (con e senza il carattere jolly) per me, dalla directory del negozio. Esegui esattamente quel comando e dalla cartella del negozio? E deve essere il percorso relativo (che trova vede / stampa), non assoluto.
Kevin,

Risposte:


88

L'hai quasi trovato :)

du -ch --exclude=./relative/path/to/uploads

Nota nessun asterisco alla fine. L'asterisco indica che tutte le sottodirectory in "upload" devono essere omesse, ma non i file direttamente in quella directory.


4
Strana ... la sintassi con punto ( du -sb --exclude=./relative/path/to/uploads) non funziona per me. Questo fa:du -sb --exclude relative/path/to/uploads
Nux,

4
@Nux probabilmente il tuo sapore di du. Il mio (OSX) non ha nemmeno --exclude, invece deve -I mask"Ignorare file e directory corrispondenti alla maschera specificata". Nel tuo esempio di lavoro ometti anche il =, facendomi pensare che sia solo la tua versione di duessere leggermente più duflessibile.
phatskat,

Sì [OSX] [1] versione sembra una versione molto più semplificata di [Linux du] [2]. [1]: developer.apple.com/library/mac/documentation/Darwin/Reference/… [2]: linux.die.net/man/1/du
Nux

E se volessi escludere più directory, ad esempio qui, escludendo le directory junk_to_ignore e caricando le directory?
Kiran K Telukunta,

Perché funziona con un percorso relativo, ma non un percorso assoluto? Molto strano!
Nick,

9

Per escludere più directory, basta passare nuovamente il flag --exclude.

du -ch --exclude=relative/path/to/uploads --exclude other/path/to/exclude

1
puoi anche usaredu -ch --exclude={relative/path/to/uploads,other/path/to/exclude}
Hajo Thelen il

4

fantastico per saltare i file system virtuali in questo modo

du -hsx --exclude=/{proc,sys,dev} /*

1

Se devi essere su macOS, installi GNU Coreutils con il seguente comando.

brew install coreutils

La maggior parte dei comandi installati da Coreutils sono preceduti da g, poiché hanno un omonimo BSD preinstallato su macOS. Quindi puoi fare quanto segue.

gdu --exclude=Microsoft /Library/Fonts/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.