2

我编写了一个小的 shell 脚本来遍历名称中包含数字的文件夹。脚本如下。

#!/bin/bash
for (( i = 100; i < 1000; i++))
do
    cp test0$i/test.out executables/test0$i.out
done

在这里,他的脚本遍历 test0100 .. 到 test0999。我想增强此脚本以从test0000遍历到test1100文件夹。我无法做到这一点。

我是 shell 脚本的新手。任何帮助表示赞赏。

4

3 回答 3

3

使用序列:

for i in $(seq -w 0 1100); do
    cp test$i/test.out executables/test$i.out
done

使用-w标志 seq 填充生成的带有前导零的数字,以使所有数字具有相等的长度。

于 2013-05-28T05:14:35.317 回答
2

这个怎么样 -

#!/bin/bash
for (( i = 0; i < 1100; i++))
do
    cp test$(printf "%04d" $i)/test.out executables/test$(printf "%04d" $i).out
done
于 2013-05-28T05:09:50.633 回答
0

最近的一次狂欢

#!/bin/bash
for i in {0000..1100}; do
do
    cp test$i/test.out executables/test$i.out
done

请注意,大括号扩展发生在变量扩展之前(参见手册),所以如果你想做

start=0000
stop=1100
for i in {$start..$stop}

那是行不通的。在这种情况下,使用seq

于 2013-05-28T10:58:25.567 回答