du
ne résumerait pas si vous lui transmettez une liste de fichiers.
Au lieu de cela, redirigez la sortie vers cut
et laissez awk
résumer. Vous pouvez donc dire :
find . -mtime +180 -exec du -ks {} \; | cut -f1 | awk '{total=total+$1}END{print total/1024}'
Notez que l'option -h
pour afficher le résultat dans un format lisible par l'homme a été remplacé par -k
ce qui équivaut à une taille de bloc de 1K. Le résultat est présenté en Mo (voir total/1024
ci-dessus).
@PeterT a raison. Presque toutes ces réponses invoquent une commande (du) pour chaque fichier, ce qui est très gourmand en ressources et lent et inutile. Le moyen le plus simple et le plus rapide est le suivant :
find . -type f -mtime +356 -printf '%s\n' | awk '{total=total+$1}END{print total/1024}'
Pourquoi pas ça ?
find /path/to/search/in -type f -mtime +180 -print0 | du -hc --files0-from - | tail -n 1