Hoy me he encontrado con el problema de tener que generar una secuencia de números desde un terminal con bash. A todos los números de dicha secuencia debían estar formados por tres caracteres con lo que debía añadir ceros de relleno a la izquierda del número.
Buscando un poco me he encontrado con esta interesante entrada donde explica como usar el comando printf basándose en el uso que el autor le da a la función en C.
http://jonathanwagner.net/2007/04/zero-padding-in-bash/
A modo de resumen, para generar la secuencia he utilizado el siguiente bucle:
for i in {1..10}; do printf «%03d\n» $i; done
001
002
003
004
005
006
007
008
009
010
De esta forma me he podido descargar los 100 ficheros secuenciales que me interesaban de una forma rápida y cómoda.
for i in {1..100}; do seq=`printf «%03d\n» $i`; wget $url1$seq$url2; done
Nota: parece que desde la versión 4.1.5 de bash se puede simplificar de la siguiente manera:
$ for i in {01..10}; do echo $i; done
01
02
03
04
05
06
07
08
09
10
Las últimas versiones de las diferentes distribuciones de GNU/Linux ya vienen con una versión de bash superior, con lo que la segunda opción será mas óptima. En sistemas antiguos o con otras shells se podría utilizar la opción con el printf.
gracias maestro
Me gustaMe gusta