将以特定字符开头的文件重命名为AIX中的特定名称

时间:2014-10-01 12:48:06

标签: shell unix rename aix

我有多个文件以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

1 个答案:

答案 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?