Linux 脚本; For Loop 重命名;脚本新手

Linux Script; For Loop to rename; New to Scripting

您将不得不原谅我,我编写 Linux 脚本的经验很少。好的,我想做的是重命名具有指定名称的文件的一部分,但我遇到的问题是我在 For 循环期间遇到的错误是 0403-011 The specified替换对该命令无效 我不确定我在 for 循环中做错了什么,有人可以帮忙吗?

    #Creates Directory
    echo "Name of New Directory"
    read newdir
    if [[ -n "$newdir" ]]
    then
      mkdir $newdir
    fi
    echo $userInput Directory Created
    echo 
    echo "Directory you wish to Copy?"
    read copydir
    if [[ -n "$copydir" ]]
    then
    #Copies contents of Specified Directory
     cp -R $copydir/!(*.UNC) $newdir;

    #Searches through directory  
    for file in $newdir/$copydir*; do
    mv -v -- "$file" "${file/old/new}";
    done


fi

违规行:

mv -v -- "$file" "${file/old/new}";

应该是:

mv -v -- "$file" "${file//old/new}";

如果您想将 $old 替换为 $new(而不是将 "old" 替换为 "new"),请写:

mv -v -- "$file" "${file//$old/$new}";

您使用的是哪个版本的 ksh?

"${file//old/new}""${file/old/new}"ksh93.

中的有效语法

如果您的环境 ksh88 "${file//old/new}" 不支持替换。

您必须使用 sed/tr 来替换模式。这是 sed 的示例。

mv -v -- "$file" "$(echo ${file}|sed 's/old/new/')"