Comment afficher la barre de progression wget uniquement?

Par exemple:

wget http://somesite.com/TheFile.jpeg

downloading: TheFile.tar.gz ...
--09:30:42--  http://somesite.com/TheFile.jpeg
           => `/home/me/Downloads/TheFile.jpeg'
Resolving somesite.co... xxx.xxx.xxx.xxx.
Connecting to somesite.co|xxx.xxx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,614,820 (1.5M) [image/jpeg]

25% [======>                              ] 614,424      173.62K/s    ETA 00:14

Comment puis-je le faire ressembler à ceci

downloading: TheFile.jpeg ...
25% [======>                              ] 614,424      173.62K/s    ETA 00:14

Je sais que curl peut le faire, mais je dois obtenir wget pour faire ce travail.

50
demandé sur Camilo Martin 2011-01-14 02:22:21

9 réponses

Vous pouvez utiliser le filtre suivant:

progressfilt ()
{
    local flag=false c count cr=$'\r' nl=$'\n'
    while IFS='' read -d '' -rn 1 c
    do
        if $flag
        then
            printf '%c' "$c"
        else
            if [[ $c != $cr && $c != $nl ]]
            then
                count=0
            else
                ((count++))
                if ((count > 1))
                then
                    flag=true
                fi
            fi
        fi
    done
}

Utilisation:

$ wget --progress=bar:force http://somesite.com/TheFile.jpeg 2>&1 | progressfilt
100%[======================================>] 15,790      48.8K/s   in 0.3s

2011-01-13 22:09:59 (48.8 KB/s) - 'TheFile.jpeg' saved [15790/15790]

Cette fonction dépend d'une séquence de 0x0d0x0a0x0d0x0a0x0d envoyée juste avant le démarrage de la barre de progression. Ce comportement peut dépendre de l'implémentation.

22
répondu Dennis Williamson 2011-01-14 04:13:54

Utilisation:

wget http://somesite.com/TheFile.jpeg -q --show-progress

-q - Désactiver la sortie de Wget

--show-progress - Forcer wget à afficher la barre de progression dans n'importe quelle verbosité

96
répondu Lord Bo 2015-12-12 01:34:58

L'option --show-progress, comme souligné par d'autres, est la meilleure option, mais il n'est disponible que depuis GNU wget 1.16, voir les changements Remarquables dans wget 1.16.

Pour être sûr, nous pouvons d'abord vérifier si --show-progress est pris en charge:

# set progress option accordingly
wget --help | grep -q '\--show-progress' && \
  _PROGRESS_OPT="-q --show-progress" || _PROGRESS_OPT=""

wget $_PROGRESS_OPT ...

Peut-être qu'il est temps d'envisager d'utiliser simplement curl.

10
répondu ryenus 2016-05-05 14:15:52

Vous pouvez utiliser le follow option de tail:

wget somesite.com/TheFile.jpeg --progress=bar:force 2>&1 | tail -f -n +6

Le +6 est de supprimer les 6 premières lignes. Il peut être différent sur votre version de wget ou votre langue.

Vous devez utiliser --progress=bar:force sinon wget passe au type dot.

L'inconvénient est que le rafraîchissement est moins fréquent qu'avec wget (ressemble à toutes les 2 secondes). L'option --sleep-interval de tail semble être destinée juste pour cela, mais elle n'a rien changé pour moi.

7
répondu Metaxal 2013-06-07 14:51:44

Vous pouvez utiliser les options standard:

wget --progress=bar http://somesite.com/TheFile.jpeg
4
répondu slva 2014-02-28 05:32:00

Ceci est un autre exemple, peut-être vous aidera

download() {
    local url=$1
    echo -n "    "
    wget --progress=dot $url 2>&1 | grep --line-buffered "%" | sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
    echo -ne "\b\b\b\b"
    echo " DONE"
}
2
répondu 2012-10-12 09:16:47

Ce n'est pas littéralement une réponse mais cet extrait pourrait également être utile à certains venant ici pour par exemple "zenity wget GUI":

LANG=C wget -O /dev/null --progress=bar:force:noscroll --limit-rate 5k http://nightly.altlinux.org/sisyphus/ChangeLog 2>&1 | stdbuf -i0 -o0 -e0 tr '>' '\n' | stdbuf -i0 -o0 -e0 sed -rn 's/^.*\<([0-9]+)%\[.*$/\1/p' | zenity --progress --auto-close

Ce qui était crucial pour moi est stdbuf(1).

0
répondu Michael Shigorin 2015-09-22 16:01:18

Voici une solution qui vous montrera un point pour chaque fichier (ou ligne, d'ailleurs). Il est particulièrement utile si vous téléchargez avec --recursive. Cela ne détectera pas les erreurs et peut être légèrement désactivé s'il y a des lignes supplémentaires, mais pour des progrès généraux sur beaucoup de fichiers, il est utile:

wget -r -nv https://example.com/files/ | \
    awk -v "ORS=" '{ print "."; fflush(); } END { print "\n" }'
0
répondu Philipp Kewisch 2017-04-05 10:39:56
curl -o pic.png http://somesite.com/pic.png

Montrez-moi seulement les informations de progression sans le bavardage D'URL/adresse.

-4
répondu user562374 2011-01-14 01:38:27