[WGET]obtenir la taille d'un fichier

Résolu/Fermé
maryloo - 29 mai 2008 à 20:46
 maryloo - 30 mai 2008 à 20:40
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 mai 2008 à 08:37
Salut,

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

super!

merci beaucoup ! ça va me faciliter la vie !
0
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 mai 2008 à 14:25
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
tout est clair merci beaucoup !
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
29 mai 2008 à 23:58
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