seq -w equivalente em os-x bash

2

Eu tenho subpastas chamadas 00 01 02, ... n com cada nome de pasta contendo pelo menos 2 dígitos. Eu preciso acessar essas sub-pastas no terminal os-x. O comando

for i in $(seq -w 00 06); do
echo $i;
done

produz uma saída de 0 1 2 3 4 5 6 . No entanto, o código acima no RHEL produzirá uma saída de 00 01 02 03 04 05 06 . Como posso impor o mac terminal para produzir uma saída de pelo menos 2 dígitos semelhante ao RHEL?

    
por WanderingMind 04.11.2015 / 15:29

2 respostas

2

Eu não tenho um os-x para experimentá-lo, mas talvez essa alternativa funcione:

seq -f '%02.0f' 0 6
    
por 04.11.2015 / 17:53
0

OS / X vem com zsh , então você pode escrever seu script em zsh (note que você já estava usando a sintaxe zsh (já que seu $i não foi citado e invoca o operador split + glob) em bash ):

for x in {00..06}; do
  echo $x
done

Posixly, você sempre pode fazer:

x=0; while [ "$x" -le 6 ]; do
  printf '%02d\n' "$x"
  x=$((x + 1))
done

Ou

seq() (first=$1 last=$2 width=${3:-0} step=${4:-1}
  awk "BEGIN{for (i = $first; i <= $last; i += $step)
    printf \"%0${width}d\n\", i}"
)

unset -v IFS # make sure we get the default separator
             # for the split+glob invocation below
for i in $(seq 0 6 2); do
  echo "$i"
done
    
por 04.11.2015 / 18:09