Uma dica simples, mas que talvez possa vir a ser útil. Para formatar números no shell, adicionando zeros à esquerda, você pode tentar uma das seguintes formas:
1 - Utilizando o seq:
seq -f "%0<VALOR>g" INÍCIO FIM
Onde <VALOR> é um número inteiro positivo!
Ex.:
seq -f "%05g" 1 10
Produzirá:
00001
00002
...
00010
2 - Utilizando o printf:
printf "%0<VALOR>d\n" {INÍCIO..FIM}
Obs.: A construção '{INÍCIO..FIM}' só é válida no Zsh, Ksh e Bash.
Ex.:
printf "%05d\n" {1..10}
Produzirá a mesma saída do exemplo anterior.
3 - Já se você usa o Ksh ou Zsh, também é possível utilizar o comando built-in 'typeset':
typeset -Z <VALOR> variável=valor
Ex.:
typeset -Z 3 i=0
$ for i in {1..100} ; do print $i ; done
001
002
...
100
P.S.: Também é possível utilizar o built-in 'print' com a opção '-f'.
print -f "%03d\n" {1..100}
Para deixar as coisas ainda mais fáceis de se entender, aqui vai um exemplo prático para esse tipo de aplicação:
#!/bin/sh
#
# Renomeando arquivos dum diretório de forma padronizada.
#
# Uso: script /path/arquivos/*
novo_nome=meu_arquivo
contador=1
for i in $@
do
zeros=`printf "%03d\n" $contador`
mv -v "$i" "${novo_nome}$zeros"
contador=`expr $contador + 1`
done
[1] Comentário enviado por staltux em 04/07/2009 - 00:06h
uhu legal isso...
ates eu ficava fazendo isso usando variaveis x,y,z e incrementando uma por uma no loop while
tipo $x$y$z
se $z for igual a 9, zera $z e add 1 a variavel $y...e por ai vai...nossa quebrou mo galhao aqui