There are a few different things you could do here: but without knowing exactly your curl methodology I can just offer a few suggestions.
Make an iterative counting for loop:
for file {1..100000}; do echo "downloading: $file" >&2 ; curl [whatever] ; done
This will redirect the "downloading: $file"to STDERR so if you're using a redirect on STDOUT it won't mess it it up but you can still see it on the screen
for file {1..100000}; do echo "downloading: $file" >> progress.out ; curl [whatever] ; done
This writes progress to a file so it won't show up on the screen at all, then you can just tail -f progress.out
If your curl isn't iterative:
terminal 1:
curl [whatever] | tee progress.out
terminal 2:
watch -n5 "grep -c '[unique file delimiter]' progress.out"
tee writes a copy of STDOUT to a file, and you grep count for something that only appears once per HTML doc... maybe a <HEAD>
or <HTML>
tag or something else. Watch will just run the grep it every 5 seconds to let you know how many you have completed.
it is possible to display something like: "downloading [200/100000]". but as you said, you want to print the file contents to stdout. if you got status/progress information, they should be printed to stdout as well. it will mess your stdout up. what do you exactly want? – None – 2012-12-14T14:37:21.233