GNU/Linux >> Tutoriels Linux >  >> Linux

additionner tous les nombres de du

Dans AWK :

{ sum += $1 }
END { print sum }

Alors

du -b /tmp/* | awk '{ sum += $1 } END { print sum }'

Notez que le résultat ne sera pas correct si les répertoires sous /tmp ont eux-mêmes des sous-répertoires, car du produit des totaux cumulés sur les répertoires et leurs enfants.

du -s calculera la somme pour vous correctement (sur tous les sous-répertoires et fichiers dans /tmp , y compris celles masquées) :

du -sb /tmp

et du -c calculera la somme des répertoires et fichiers listés, correctement aussi :

du -cb /tmp/*

Vous pouvez également produire une somme totale des fichiers sélectionnés avec du -c . Cela fonctionne même si un argument de du n'est pas un répertoire, ce qui n'est pas le cas de du -s :

$ du -sb file1 file2
17  file1
18  file2

$ du -cb file1 file2
17  file1
18  file2
35  total

BTW, pour une utilisation interactive, je recommande d'ajouter -h option au lieu de -b ou tout autre multiplicateur de taille de bloc. Cela imprimera la taille dans un format d'unité lisible par l'homme.

$ du -ch file1 file2
4.0K    file1
4.0K    file2
8.0K    total

C'est simple, vous pouvez utiliser :

 du -b /tmp/* | awk 'BEGIN{i=0} {i=i+$1} END{print i}'

Si vous n'utilisez pas de caractère générique, si vous utilisez un nom de répertoire tel que /tmp , alors vous devez éviter la dernière entrée car la sortie de du -b /tmp est comme :

size1 file1
size2 file2
size_total .

Alors maintenant, vous devriez éviter cette dernière entrée, alors utilisez :

du -b /tmp | awk 'BEGIN{i=0} {if( $2 != "." ){i=i+$1}} END{print i}'

Cependant, vous pouvez également utiliser -s option, il calculera le résumé pour vous alors vous n'avez pas besoin d'ajouter les valeurs, imprimez simplement la dernière, c'est-à-dire :

du -s directory

Linux
  1. Comment supprimer tous les répertoires .svn de mes répertoires d'application

  2. Utiliser awk pour imprimer toutes les colonnes de la nième à la dernière

  3. Est-il possible d'installer tous les packages à partir d'un référentiel APT ?

  4. Répertorier toutes les bases de données MongoDB à partir du terminal bash Linux

  5. Suppression de toutes les partitions à partir de la ligne de commande

Répertorier ou vérifier tous les noyaux Linux installés à partir de la ligne de commande

Comment trouver toutes les polices installées à partir de la ligne de commande sous Linux

Génération de nombres aléatoires à partir du terminal Linux

Comment sauvegarder toutes les bases de données MySQL à partir de la ligne de commande

Comment supprimer tous les espaces blancs d'un fichier texte

iptables abandonne toutes les requêtes ICMP entrantes sauf d'une adresse IP