seq -w эквивалент в os-x bash

seq -w эквивалент в os-x bash

У меня есть подпапки с именами 00 01 02, ... n, в которых имя каждой папки содержит не менее 2 цифр. Мне нужно получить доступ к этим подпапкам в терминале os-x. Команда

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

выводит 0 1 2 3 4 5 6. Однако приведенный выше код в RHEL выведет 00 01 02 03 04 05 06. Как заставить терминал Mac выводить не менее 2 цифр, как в RHEL?

решение1

У меня нет OS-X, чтобы попробовать, но, возможно, эта альтернатива сработает:

seq -f '%02.0f' 0 6

решение2

OS/X поставляется с zsh, поэтому вы можете написать свой скрипт zshвместо этого (обратите внимание, что вы уже использовали zshсинтаксис (поскольку ваш $iне был заключен в кавычки, что вызывает оператор split+glob в bash):

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

Конечно, вы всегда можете сделать:

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

Или

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

Связанный контент