2016-02-15 34 views
1

我試圖複製文件並在其末尾添加奇數和偶數如何才能做到這一點?我知道我可以按順序使用{001..10},但是我怎樣才能使它成爲奇數和偶數。 PS這是bash腳本示例。使用腳本編號和複製奇數和偶數文件

for i in {001..10}; %want odd numbers 001,003,005,007,009 
    do 
     cp talk_only_L1L2_18_feb_11_2016_.wav file-$i; 
done 

for i in {001..10}; %want even numbers 002,004,006,008,010 
    do 
     cp talk_only_L1L2_19_feb_11_2016_.wav file-$i; 
done 

回答

0

可以是這樣做的,因爲奇數

for i in {001..10..2}; ... 

對於偶數它是相似的,但你必須改變開始

for i in {002..10..2}; ... 
+1

如果您的bash支持{} m..n而不是擴展形式的版本,你可以使用這裏介紹的方法進行:在{001'的我。 0.10};做echo $((2 * i)); done'。 – peak

+0

@peak這對於例如'i = 008'不會真正起作用。而對於不包含數字「8」和「9」的值,前導的「0」不會被保留。 –

+0

這只是一條評論。您可以使用例如printf來獲得填充。 – peak

1

的方法有while循環,它可以在任何POSIX兼容的shell中工作。

i=0 
while [ "$i" -le 10 ]; do 
    if [ "$(i % 2)" = 0 ]; then 
     # do even-file stuff 
    else 
     # do odd-file stuff 
    fi 
    i=$((i + 1)) 
done 

有兩個迴路,

i=0 
while [ "$i" -le 10 ]; do 
    # do even-file stuff 
    i=$((i + 2)) 
done 
i=1 
while [ "$i" -le 10 ]; do 
    # do odd-file stuff 
    i=$((i + 2)) 
done 
+2

除了OP需要像'001,002',而不是'1,2'這樣的數字,他將不得不使用'printf',例如:'printf%03d $ i'。 – fanton