determiner la taille d'un ensemble de fichiers

determiner la taille d'un ensemble de fichiers - Shell/Batch - Programmation

Marsh Posté le 23-08-2005 à 10:49:20    

je fait un script qui determine la taille d'un ensemble de fichier dans un répertoire :
tout se passe bien, mais dès fois si le chiffre calculé est important j'obtient un résultat négative (chiffre < 0) !
voilà ou je suis :

Code :
  1. som=0
  2. for i in `ls -lrt FILENAME* | awk '{print $5}'` ; do som=`expr $i + $som` ; done
  3. echo $som


 
Merci

Reply

Marsh Posté le 23-08-2005 à 10:49:20   

Reply

Marsh Posté le 23-08-2005 à 10:54:40    

Pourquoi tu n'utilises pas "du" ?
 
Sinon en forçant le type de som en int, avec typeset, ça ne suffit pas ?

Reply

Marsh Posté le 23-08-2005 à 11:11:24    

je sais pour la command :

Citation :

du


Code :
  1. #du -sb FILENAME*
  2. 300      FILENAME1
  3. 400      FILENAME2
  4. 500      FILENAME3


elle donne la taille de chaque fichiers trouvés et non la somme TOTAL
Merci

Reply

Marsh Posté le 23-08-2005 à 11:19:08    

Résultat en ko :

du -k FILENAME* | awk '{ var += $1 } END{ print var }'


 
Résultat en Mo :

du -k FILENAME* | awk '{ var += $1 } END{ print var / 1024 }'


 

Reply

Marsh Posté le 23-08-2005 à 11:37:57    

Résultat en Mo :

Code :
  1. #du -k FILENAME* | awk '{ var += $1 } END{ print var / 1024 }'
  2. 5184.78


Résultat en ko :  

Code :
  1. #du -k FILENAME* | awk '{ var += $1 } END{ print var }'
  2. 5.30922e+06


est ce qu'il n ya pas un moyen d'afficher le resultat en Ko format plus lisible que ça.
 
Merci d'avnace

Reply

Marsh Posté le 23-08-2005 à 11:42:45    

Résultat en Mo :

Code :
  1. #du -k FILENAME* | awk '{ var += $1 } END{ print var / 1024 }'
  2. 5184.78


Résultat en ko :  

Code :
  1. #du -k FILENAME* | awk '{ var += $1 } END{ print var }'
  2. 5.30922e+06


est ce qu'il n ya pas un moyen d'afficher le resultat en Ko format plus lisible que ça.
 
Merci d'avnace

Reply

Marsh Posté le 23-08-2005 à 11:47:04    

Je ne suis pas parvenu à reproduire le problème sur mon système.
 

$ du -k plein_de_trucs | awk '{ var += $1 } END{ print var }'
7462314


 
A partir de là, je ne sais pas t'aider, je passe la main.

Reply

Marsh Posté le 23-08-2005 à 12:24:25    

Citation :

est ce qu'il n ya pas un moyen d'afficher le resultat en Ko format plus lisible que ça.


 
En utilisant printf au lieu de print ?
 

Code :
  1. #du -k FILENAME* | awk '{ var += $1 } END{ printf "%15d\n" var }'


 
Non testé, car je suis dans le même cas qu'Elmoricq, je ne peux reproduire ton erreur.

Reply

Marsh Posté le 24-08-2005 à 11:51:55    

Citation :


Je ne suis pas parvenu à reproduire le problème sur mon système.
 

Code :
  1. $ du -k plein_de_trucs | awk '{ var += $1 } END{ print var }'
  2. 7462314


 A partir de là, je ne sais pas t'aider, je passe la main.


 
ça marche avec ça :

Code :
  1. som=0
  2. for i in `ls -ltr FILENAME*|awk '{print $5}'`;do som=`echo $som+$i|bc -l`;done
  3. echo $som


l'option : "-l" dans bc est trés importante ( Définir la bibliothéque mathématique standard) sans "-l" on aura un debordement.  
Merci
 

Reply

Marsh Posté le 24-08-2005 à 11:54:14    

Je ne connaissais pas du tout "bc". :jap:

Reply

Marsh Posté le 24-08-2005 à 11:54:14   

Reply

Marsh Posté le 27-08-2005 à 22:27:02    

Pourquoi pas simplement du -ks . ou du -ks /dir_to_check ?
Au pire un petit | awk '{ print $1 }' pour ne garder que les Ko.


Message édité par Deadlock le 27-08-2005 à 22:27:37

---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed