web-dev-qa-db-fra.com

Utilisation de --exclude avec la commande du

C'est probablement quelque chose de basique mais je ne suis pas en mesure de le faire fonctionner. J'essaie d'utiliser DU pour obtenir une taille totale de fichiers moins certains répertoires. Je dois exclure un répertoire spécifique appelé uploads mais pas tous les répertoires appelés uploads. Par exemple, ma structure de fichiers ressemble un peu à ceci:

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

Je peux exécuter la commande suivante:

du -ch --exclude=uploads* 

et cela me donne la taille du fichier moins tous les répertoires "uploads". Cependant, en essayant d'exclure certains répertoires (et tous ses sous-répertoires), j'échoue. J'ai essayé des variantes de:

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

mais ne semble pas pouvoir le comprendre. Comment exclure un répertoire spécifique?

71
Will

Vous l'avez presque trouvé :)

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

Remarque non astérisque à la fin. L'astérisque signifie que tous les sous-répertoires sous "upload" doivent être omis - mais pas les fichiers directement dans ce répertoire.

92
rozcietrzewiacz

Pour exclure plusieurs répertoires, passez à nouveau l'indicateur --exclude.

du -ch --exclude=relative/path/to/uploads --exclude other/path/to/exclude
10
Dave Neeley

génial pour sauter les systèmes de fichiers virtuels comme ça

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

Si vous devez être sur macOS, vous installez GNU Coreutils avec la commande suivante.

brew install coreutils

La plupart des commandes installées par Coreutils sont préfixées par g, car elles ont un homonyme BSD préinstallé sur macOS. Ensuite, vous pouvez effectuer les opérations suivantes.

gdu --exclude=Microsoft /Library/Fonts/
1
Lei Zhao

Pour exclure plusieurs dossiers

du -ch --exclude={path/to/folder1,path/to_folder2/,...,}
0
jedi