81 votes

Comment obtenir la taille d'un fichier distant à partir d'un shell script ?

Existe-t-il un moyen d'obtenir la taille d'un fichier distant tel que

http://api.twitter.com/1/statuses/public_timeline.json

dans le shell script ?

0 votes

Quelques exemples dans cette page, en voici un pour le shell Windows script (qui peut être doublé en bash script avec quelques modifications) superuser.com/a/1007898/429721

1 votes

Et si wget --spider ?

3voto

fguillen Points 11849

La solution acceptée ne fonctionnait pas pour moi, voici la solution :

curl -s https://code.jquery.com/jquery-3.1.1.min.js | wc -c

1voto

Tom Freudenberg Points 1098

Pour moi, combiner tout ce qui précède fonctionne :

URL="http://cdimage.debian.org/debian-cd/current/i386/iso-dvd/debian-9.5.0-i386-DVD-1.iso"
curl --head --silent --location "$URL" | grep -i "content-length:" | tr -d " \t" | cut -d ':' -f 2

Cela renvoie uniquement la longueur du contenu en octets :

3767500800

1voto

GDP2 Points 1145

J'ai une fonction shell, basée sur Réponse de codaddict qui donne la taille d'un fichier distant dans un format lisible par l'homme :

remote_file_size () {
  printf "%q" "$*"           |
    xargs curl -sI           |
    grep Content-Length      |
    awk '{print $2}'         |
    tr -d '\040\011\012\015' |
    gnumfmt --to=iec-i --suffix=B # the `g' prefix on `numfmt' is only for systems
  # ^                             # that lack the GNU coreutils by default, i.e.,
  # |                             # non-Linux systems
  # |
  # |                             # in other words, if you're on Linux, remove this
  # |                             # letter `g'; if you're on BSD or Mac, install the GNU coreutils
} # |                                        |
  # +----------------------------------------+

0voto

Ali Points 358

Vous obtiendrez ainsi des informations détaillées sur le téléchargement en cours.

il suffit de spécifier une URL comme dans l'exemple ci-dessous.

$ curl -O -w 'We downloaded %{size_download} bytes\n' 
https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz

sortie

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 7328k  100 7328k    0     0   244k      0  0:00:29  0:00:29 --:--:--  365k
We downloaded 7504706 bytes

À des fins d'automatisation, il vous suffit d'ajouter la commande à votre fichier script.

-1voto

Fthr Points 745

J'utilise comme ça ([Cc]ontent-[Ll]ength:) parce que le serveur donne plusieurs caractères Content-Length dans l'en-tête de réponse.

curl -sI "http://someserver.com/hls/125454.ts" | grep [Cc]ontent-[Ll]ength: | awk '{ print $2 }'

Accept-Ranges: bytes Access-Control-Expose-Headers: Date, Server, Content-Type, Content-Length Server: WowzaStreamingEngine/4.5.0 Cache-Control: no-cache Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: OPTIONS, GET, POST, HEAD Access-Control-Allow-Headers: Content-Type, User-Agent, If-Modified-Since, Cache-Control, Range Date: Tue, 10 Jan 2017 01:56:08 GMT Content-Type: video/MP2T Content-Length: 666460

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X