Utilisation de --exclude avec la commande du


67

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

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

Je peux lancer la commande suivante:

du -ch --exclude=uploads* 

et il 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 n'arrive pas à comprendre. Comment puis-je exclure un répertoire spécifique?


username: store$ du -ch --exclude=./uploadstravaillé (avec et sans le caractère générique) pour moi, à partir du répertoire du magasin. Exécutez-vous cette commande exactement et à partir du dossier de stockage? Et ce doit être le chemin relatif (trouver, voir / imprimer), pas absolu.
Kevin

Réponses:


88

Vous l'avez presque trouvé :)

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

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


4
Étrange ... la syntaxe avec dot ( du -sb --exclude=./relative/path/to/uploads) ne fonctionne pas pour moi. Cela fait:du -sb --exclude relative/path/to/uploads
Nux

4
@Nux probablement votre goût de du. Mine (OSX) n'en a même pas --exclude, il doit -I mask"Ignorer les fichiers et les répertoires correspondant au masque spécifié". Dans votre exemple de travail, vous omettez également le =, ce qui me fait penser que ce n’est que votre version d’ duêtre légèrement différent du.
phatskat

Oui, la version [OSX] [1] semble une version beaucoup plus simplifiée de [Linux du] [2]. [1]: developer.apple.com/library/mac/documentation/Darwin/Reference/… [2]: linux.die.net/man/1/du
Nux

Que faire si je veux exclure plusieurs répertoires, par exemple ici, en excluant les répertoires junk_to_ignore et les répertoires de téléchargement?
Kiran K Telukunta

Pourquoi fonctionne-t-il avec un chemin relatif, mais pas un chemin absolu? Très étrange!
Nick

9

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

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

1
tu peux aussi utiliserdu -ch --exclude={relative/path/to/uploads,other/path/to/exclude}
Hajo Thelen

4

génial pour ignorer les systèmes de fichiers virtuels comme si

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

1

Si vous devez être sur macOS, 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 faire ce qui suit.

gdu --exclude=Microsoft /Library/Fonts/
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.