そのようなUbuntuのデフォルトのようないくつかのシェル、/bin/sh
(であるdash
)、または mksh
ブレース展開を持たない、またはの場合ksh
-ブレース展開パッド入りのゼロを使用することはできません。
$ ksh -c 'echo {05..13}'
5 6 7 8 9 10 11 12 13
そのような場合、printf
ファイル名の数字部分をフォーマットするために利用でき、whileループを使用してcのようなforループ動作を実装できます(置換echo
するrm
か、任意のものに注意してください):
$ i=5; while [ "$i" -le 10 ]; do num=$(printf "%.2d" "$i" ); echo "file$num.txt";i=$(($i+1)); done
file05.txt
file06.txt
file07.txt
file08.txt
file09.txt
file10.txt
そして、これはかなりのポータブルである-と連携しdash
、ksh
、mksh
また、bash
。以下の場合ksh
とbash
我々はまた、使用することができますc-style for loop syntax (but not in case of
mksh or
)dash`を:
$ ksh -c 'for((i=5;i<11;i++)); do num=$(printf "%.2d" "$i" ); echo "file$num.txt";done'
file05.txt
file06.txt
file07.txt
file08.txt
file09.txt
file10.txt
注意していることbash
の場合、printf
支持体は、変数に印刷するため、私たちは何ができるprintf -v num "%.2d" "$i"
代わりに、コマンド置換を使用します。