2014-10-01 74 views
0

我有多個以error_ *開頭的文件,我想用特定名稱重命名所有這些文件。我正在使用下面的腳本來做到這一點,但它不工作。我想重新命名將以特定字符開頭的文件重命名爲AIX中的特定名稱

error_CO_5010wgs837in.10 
error_CO_coprofo.7 

counter=1 
for i in `ls error*` 
do 
    mv $i ABC$counter_$i 
    $((counter++)) 
done 

示例文件我想用計數器值,而每個重命名的文件,如果我不使用計數器,它工作正常。但我想知道爲什麼上面的腳本不work.here是我的腳本是給輸出:

ABCerror_CO_5010wgs837in.10 
ABCerror_CO_coprofo.7 

這我期待的輸出如下:

ABC1_error_CO_5010wgs837in.10 
ABC2_error_CO_coprofo.7 
+0

'$((counter ++))':'美元'是不需要的。 – kev 2014-10-01 12:56:42

+0

是沒有美元也試過,但不是預期的結果。 – 2014-10-01 13:05:36

+0

也許你的shell不支持'((VAR ++))'語法 – kev 2014-10-01 13:07:31

回答

2

你是使用$counter_,並尋找變量counter_。要指定counter是變量,並且您還想要_,請使用${counter}_

這應該工作:

#!/bin/bash 

# to avoid error* match exactly error* if does not expand to any result 
shopt -s nullglob 

counter=1 
for i in error* 
do 
     echo "mv $i ABC${counter}_$i" #now it is echo; change to mv once you tested it works 
     counter=$((counter+1)) 
done 

見不同的方式來增加一個變量:How to increment a variable in bash?

相關問題