我有多个文件以error_ *开头,我想重命名所有具有特定名称的文件。我使用下面的脚本来做到这一点,但它不起作用。
counter=1
for i in `ls error*`
do
mv $i ABC$counter_$i
$(( counter++ ))
done
我要重命名的示例文件
error_CO_5010wgs837in.10
error_CO_coprofo.7
我想在重命名每个文件时使用计数器值,如果我不使用计数器它可以正常工作。但我想知道为什么上面的脚本不起作用。我的脚本给出了输出:
ABCerror_CO_5010wgs837in.10
ABCerror_CO_coprofo.7
我期待的输出如下:
ABC1_error_CO_5010wgs837in.10
ABC2_error_CO_coprofo.7
答案 0 :(得分: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?。