【问题标题】:Renaming files starting with particular chars to a particular name in AIX在 AIX 中以特定字符开头的文件重命名为特定名称
【发布时间】:2014-11-26 07:37:15
【问题描述】:

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

【问题讨论】:

  • $(( counter++ )): dollar 不需要。
  • 是的,没有美元也试过了,但不是预期的结果。
  • 可能你的shell 不支持((VAR++)) 语法

标签: shell unix rename aix


【解决方案1】:

您正在使用$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?

【讨论】:

    猜你喜欢
    • 2015-07-04
    • 2011-07-03
    • 1970-01-01
    • 2017-02-21
    • 2018-03-15
    • 2021-12-29
    • 2021-12-06
    • 1970-01-01
    • 2018-12-22
    相关资源
    最近更新 更多