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