2013-05-28 64 views
2

我寫了一個小shell腳本來迭代通過名稱中包含數字的文件夾。該腳本如下。迭代遍歷文件夾名稱如folder0100,folder0101到文件夾shell1100在shell腳本中

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

在這裏他腳本遍歷test0100 ..到test0999。 我想加強這個腳本從test0000test1100文件夾。我無法做到這一點。

我是shell腳本編程新手。任何幫助表示讚賞。

回答

3

使用了序列:

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

與生成具有前導零的數字,使得所有的數字有長度相等的-w標誌SEQ墊。

+0

討厭這樣說,但我喜歡你的解決方案比我醜惡的黑客更好! +1 :) –

+0

@perreal感謝您的解決方案。 –

2

這個怎麼樣 -

#!/bin/bash 
for ((i = 0; i < 1100; i++)) 
do 
    cp test$(printf "%04d" $i)/test.out executables/test$(printf "%04d" $i).out 
done 
+0

感謝您的解決方案。 –

0

隨着近期慶典

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

注意括號展開發生變量擴展(見the manual)之前,因此,如果你想要做

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

這是行不通的。在這種情況下,使用seq

相關問題