Linux.general : Comment calculer la taille des fichiers présents dans une liste?
Posté par Kalamar () le 11 octobre 2005
Bonjour tout le monde,
Je dispose d'une liste de fichiers toute basique listant des arborescences, genre:
/home/toto/vivelep2p.mp3
/home/tata/vivelep2p.avi
Je cherche actuellement un moyen de calculer le total de l'espace disque occupé par ces fichiers. Si vous avez des idées, elles seront les bienvenue, merci beaucoup!
plop
Je dispose d'une liste de fichiers toute basique listant des arborescences, genre:
/home/toto/vivelep2p.mp3
/home/tata/vivelep2p.avi
Je cherche actuellement un moyen de calculer le total de l'espace disque occupé par ces fichiers. Si vous avez des idées, elles seront les bienvenue, merci beaucoup!
plop
> Lire le message (17 commentaires, moyenne: 1,8).
Vous avez demandé le commentaire #634866.



Tu n'as pas du chercher beaucoup...
Un man ls t'aurait renseigné plus vite que de poster un message ici même, mais bon, passons.
Comme j'ai du temps, et que ça peut servir à d'autres...
ls -l /home/toto/vivelep2p.mp3 va te donner tout un tas d'informations, dont la taille en octets. Si ça ne te plait pas, fais un ls -lh /home/toto/vivelep2p.mp3 et tu auras la taille exprimée en k/m/g, selon ce qui est applicable.
Voilà.
All articles which are excluded shall be deemed included
Tous les articles exclus sont considérés inclus
--Brian de Palma in Phantom of the Paradize
[^]Re: Tu n'as pas du chercher beaucoup...
Il y a aussi la commande 'du' (man du).
Tu peux essayer:
du -h <mon_repertoire_ou_mes_fichiers>
ou même
du -hc <mon_repertoire_ou_mes_fichiers>
Par exemple:
du -hc /home/chez_ouam/MP3/*.mp3
ou
du -hc /home/chez_ouam/MP3/ (si tu n'a que des MP3 dans ton répertoire)
[^]Plus pratique ?
>man du
c'est fait pour ça (du = Disk Usage).
[^]Re: Tu n'as pas du chercher beaucoup...
Merci pour vos réponses!
Les fichiers listés se trouvent dans de nombreux repertoires différents, ils sont issus d'une recherche avec un find.
Comment dire à ls -lh de lister uniquement les fichiers de la liste, pas d'un repertoire directement? Ensuite j'imagine qu'il faudrait un awk ou un sed pour retirer uniquement la taille, pour enfin calculer le total.
Pour la commande 'du'; cela devrait fonctionner de la meme manière, mais comment faire un 'du' uniquement des fichiers contenu dans la liste?
Je ne sais pas si je m'y prends mal en partant d'une liste, ce que je cherche à faire c'est de simplement savoir le total de l'espace disque que prend tel ou tel type de fichier.
[^]Re: Tu n'as pas du chercher beaucoup...
man find
Ce commentaire est :
Génial, Nul, 42
[^]Re: Tu n'as pas du chercher beaucoup...
un truc comme ca ?
xargs du -hc < fichier.txt
[^]Re: Tu n'as pas du chercher beaucoup...
hmmm... $ xargs du -hc < fichier.txt me renvoit un "unmatched single quote" Mais je ne connais pas du tout xargs.
Et pour find je n'ai rien trouvé.
[^]Re: Tu n'as pas du chercher beaucoup...
pourtant un extrait de man find
ACTIONS
-exec command ;
Pas plus d'indices, tu vas arriver à trouver maintenant =)
(mais ça marche tres bien avec xargs aussi)
[^]Re: Tu n'as pas du chercher beaucoup...
je me battais avec -printf :-(
Bon je fais $ find /home -iname '*.mp3' -exec du -hs {} \; > list
J'obtiens bien la taille en kilo ou mega devant le nom du fichier, maintenant va falloir que je trouve un moyen d'additionner toutes ces valeurs :-/
[^]Re: Tu n'as pas du chercher beaucoup...
find /home -iname '*.mp3' | xargs du -sch > list
te sortira la liste avec le total a la fin.
[^]Re: Tu n'as pas du chercher beaucoup...
Perso il rale des que y'a un fichier avec des espaces dedans.
Ce commentaire est :
Génial, Nul, 42
[^]Re: Tu n'as pas du chercher beaucoup...
hop comme ca il prefere : $find /home -iname '*.mp3' | sed -e 's/ /\\ /g' | xargs du -ch
Ce commentaire est :
Génial, Nul, 42
[^]Re: Tu n'as pas du chercher beaucoup...
de mon coté il me retourne toujours ce mysterieux "unmatched single quote"
[^]Re: Tu n'as pas du chercher beaucoup...
apres les fichiers avec des espaces, tu as peut etre des fichiers avec des single quote dans leur nom ?
[^]Re: Tu n'as pas du chercher beaucoup...
y'a des chances
$ find /home -iname '*.mp3' | sed -e "s#'#\\\&#g" | xargs du -sc
Ce commentaire est :
Génial, Nul, 42
[^]Re: Tu n'as pas du chercher beaucoup...
Pour les noms de fichiers avec des espaces dedans, tu peux utiliser -print0 du côté de find, et -0 du côté de xargs :
find ./ -name "*truc" -print0 | xargs -0 ls -l
Cela sépare les noms de fichiers par le caractère null au lieu d'un espace.
[^]Re: Tu n'as pas du chercher beaucoup...
$ for fich in `find /home -iname '*.mp3' -exec du -s '{}' ';' | cut -f1`; do echo $fich + p ; done |dc
Oui il doit y avoir plus simple et oui il n'y a qu'une bonne reponse dans la liste de sortie et oui c'est ni en Mo ni en Go :p
Ce commentaire est :
Génial, Nul, 42