如何在for-loop范围内保持前导零

时间:2013-10-17 21:11:33

标签: bash

我有一个包含许多子目录的目录(名为0001,0002 ...),我想启动在每个目录中运行的bash脚本。

for i in {0001..0021}; do cd $i; ../script1.sh; cd ..; done

如上所述它会忽略000并将范围取为1到21.如何将0考虑在内?

4 个答案:

答案 0 :(得分:3)

for i in {1..21}; do
    i=`printf '%04d' $i`
    # do stuff with $i (now in the format 0001)
done

答案 1 :(得分:2)

  

我想启动一个在每个目录中运行的bash脚本。

然后您只需使用*

即可
for i in *; do cd $i; ../script1.sh; cd ..; done

答案 2 :(得分:0)

您可以在BASH中使用((...))

for ((i=0; i<=21; i++)); do j=$(printf "%04d" $i); cd $j; ../script1.sh; cd ..; done

答案 3 :(得分:0)

另一种做法(我的方式和最快)

 for i in 000{1..21}; do cd ${i:(-4)}; ../script1.sh; cd ..; done