web-dev-qa-db-fra.com

Comment afficher uniquement la barre de progression wget?

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 j’ai besoin de pouvoir faire ce travail.

53
Flan Alflani

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 '%s' "$c"
        else
            if [[ $c != $cr && $c != $nl ]]
            then
                count=0
            else
                ((count++))
                if ((count > 1))
                then
                    flag=true
                fi
            fi
        fi
    done
}

Usage:

$ 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 de l'envoi d'une séquence de 0x0d0x0a0x0d0x0a0x0d juste avant le démarrage de la barre de progression. Ce comportement peut dépendre de la mise en œuvre.

23
Dennis Williamson

Utilisation:

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

-q - Désactive la sortie de Wget

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

111
Lord Bo

L'option --show-progress, comme l'ont souligné d'autres personnes, est la meilleure option, mais elle n'est disponible que depuis GNU wget 1.16, voir Principales modifications de wget 1.16 .

Pour être sûr, nous pouvons d’abord vérifier si --show-progress est supporté:

# 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
ryenus

Vous pouvez utiliser l'option follow de tail:

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

Le +6 consiste à supprimer les 6 premières lignes. Cela 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 (toutes les 2 secondes). L'option --sleep-interval de tail semble être uniquement destinée à cela, mais cela ne m'a rien changé.

9
Metaxal

Vous pouvez utiliser les options standard:

wget --progress=bar http://somesite.com/TheFile.jpeg
4
slva

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
user870774

Voici une solution qui vous montrera un point pour chaque fichier (ou ligne, d'ailleurs). Ceci est particulièrement utile si vous téléchargez avec --recursive. Cela ne captera pas les erreurs et peut être légèrement décalé s'il y a des lignes supplémentaires, mais il est utile de suivre l'évolution générale de nombreux fichiers

wget -r -nv https://example.com/files/ | \
    awk -v "ORS=" '{ print "."; fflush(); } END { print "\n" }'
0
Philipp Kewisch

Utilisez en utilisant ces drapeaux:

wget  -q --show-progress --progress=bar:force 2>&1
0
Amir Khalili