[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
A voir également:

3 réponses

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

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

super!

merci beaucoup ! ça va me faciliter la vie !
0
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
maryloo
 
tout est clair merci beaucoup !
0
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
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