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/')"
您将不得不原谅我,我编写 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/')"