Obtenir la taille totale d'une liste de fichiers sous UNIX

Je veux exécuter un find de commande qui vous permettra de trouver un certain liste de fichiers, puis parcourir la liste de fichiers pour exécuter certaines opérations. Je tiens également à trouver la taille totale de tous les fichiers dans la liste.

Je voudrais faire la liste de fichiers, puis de faire d'autres opérations. Est-il un moyen facile pour que je puisse juste la taille totale de tous les fichiers dans la liste?

En essence je suis en train d'essayer de trouver un one-liner pour le " total_size variable dans l'extrait de code ci-dessous:

#!/bin/bash
loc_to_look='/foo/bar/location'

file_list=$(find $loc_to_look -type f -name "*.dat" -size +100M)

total_size=???

echo 'total size of all files is: '$total_size

for file in $file_list; do
         # do a bunch of operations
done
  • Vous pouvez utiliser printf "%p %s\n" dans votre find commande pour afficher le nom + la taille.
  • Si sa version de find prend en charge -printf. Une certaine forme de -exec stat -f '%z' {} \; (en fonction de la mise en œuvre du système de stat) marcherait aussi bien.
  • aussi, vous auriez alors à répartir les noms de fichiers et tailles avant la boucle for...
  • Stocker une liste de noms de fichiers dans un plat chaîne n'est pas recommandé de toute façon, puisque vous ne pouvez pas faire face avec les noms de fichiers contenant des espaces facilement.
InformationsquelleAutor HotDogCannon | 2014-02-24