我有一个包含许多子目录的目录(名为0001,0002 ...),我想启动在每个目录中运行的bash脚本。
for i in {0001..0021}; do cd $i; ../script1.sh; cd ..; done
如上所述它会忽略000并将范围取为1到21.如何将0考虑在内?
答案 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