[WGET]obtenir la taille d'un fichier

Résolu
maryloo -  
 maryloo -
coucou tout le monde :)

alors j'ai une question un peu tordue:

je voudrais savoir commet recuperer la taille d'un ficher avant de la telecharger.

si j'utilise wget je peux avoir la taille avec "spider" mais l'info est noyée parmi tant d'autres....

comment pourrais-je avoir juste la taille d'un fichier distant?

si c'est possible :)

merci
Configuration: Linux
Firefox 3.0

3 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Une variante par rapport à la syntaxe de "jisisv" :
    $ wget --spider -S $URL 2>&1 | sed -n '/^\(Longueur\|Length\)/ s#.*(\(.*\)).*#\1#p'
    191M
    ;-))
    1
    1. maryloo
       
      waouh !

      super!

      merci beaucoup ! ça va me faciliter la vie !
      0
    2. maryloo
       
      dis jipicy,

      je voudrais pas abuser mais, est ce quec'est possible de detailler la commande?

      je voudrais comprendre ce que je fais et pas copier betement...

      s'il te plait...

      merki :)
      0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    sed -n 
    On demande l'affichage sur la sortie standard que sur demande (voir option "p" plus loin)
    
    
    /^\(Longueur\|Length\)/
    Le motif à rechercher encadré par /.../
    ^ 
    indique qu'il se trouve en début de ligne
    \(...\) 
    permet de grouper plusieurs éléments (il faut protéger les parenthèses)
    \| 
    le pipe ici (protégé) est un synonyme de OU (la version de wget de jisisv est en anglais, la mienne en français) on recherche soit Longueur soit Length
    
    
    s#.*(\(.*\)).*#\1#p'
    la commande de substitution, normalement "s/chaine/remplacement/" avec des slashs, mais comme le motif recherché contient un slash, il faut le remplace par un autre caractère (ici le dièse #)
    #
    délimiteur de début chaine recherchée
    .*(\(.*\)).*
    l'expression régulière qui matche le motif recherché
    .*(
    tout se qui se trouve avant une parenthèse ouvrante, parenthèse comprise
    \(.*\)
    les parenthèses (protégées) ici délimitent se qu'on appelle une sous-expression qui sera appelée plus loin par "\1". La sous-expression matche donc ce qui se trouve entre les parenthèses
    ).*
    tout se qui suit une parenthèse fermante (comprise elle aussi) jusqu'à la fin de la ligne
    #
    délimiteur de chaine recherchée et de chaine de remplacement
    \1
    correspond à la sous expression matchée
    #
    délimiteur de fin
    p
    demande d'impression à l'écran de la chaine 


    1
    1. maryloo
       
      tout est clair merci beaucoup !
      0
  3. jisisv Messages postés 3678 Statut Modérateur 936
     
    Une piste
    
    johand@osiris ~
    $ URL='http://downloads.sourceforge.net/systemrescuecd/systemrescuecd-x86-1.0.3.iso'
    
    johand@osiris ~
    $ size=$(wget --spider -S $URL 2>&1 |grep '^Length'|cut -d " " -f2 |tr -d ',')
    
    johand@osiris ~
    $ echo $size
    199852032
    

    Je n'ai évidemment pas envisgé toutes les possiblilitès. A tester, améliorer...
    0