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.
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
}
$ 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.
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é
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
.
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é.
Vous pouvez utiliser les options standard:
wget --progress=bar http://somesite.com/TheFile.jpeg
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"
}
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" }'
Utilisez en utilisant ces drapeaux:
wget -q --show-progress --progress=bar:force 2>&1