Linux 当使用;mv";用于移动和重命名的命令,脚本将其视为目录而不是新文件名
我有一个关于Linux 当使用;mv";用于移动和重命名的命令,脚本将其视为目录而不是新文件名,linux,shell,unix,Linux,Shell,Unix,我有一个关于mv命令的问题 为了移动和重命名文件,我在终端中执行了mv file someDir/File2,它将文件移动到someDir,新名称为File2 但是,当我使用shell脚本执行此操作时,它会将File2部分视为一个目录,而不是文件的新名称 所以我有两个变量,NEWDir=NEWDir,NEWF=newName for i in *.txt ; do mv $i $NEWDIR/$NEWF done 我运行此脚本,它显示以下内容: mv: target 'newName' i
mv
命令的问题
为了移动和重命名文件,我在终端中执行了mv file someDir/File2
,它将文件移动到someDir
,新名称为File2
但是,当我使用shell脚本执行此操作时,它会将File2
部分视为一个目录,而不是文件的新名称
所以我有两个变量,NEWDir=NEWDir
,NEWF=newName
for i in *.txt ; do
mv $i $NEWDIR/$NEWF
done
我运行此脚本,它显示以下内容:
mv: target 'newName' is not a directory.
mv
仅当给定多个源参数时,才要求目标为目录
在这种情况下,这可能是由于缺少引用导致变量被拆分造成的。在所有展开式周围使用双引号(如指示)
for i in *.txt ; do
mv "$i" "$NEWDIR/$NEWF"
done
请注意,只有最后一个迭代过的文件将实际保留给定名称——其余文件将被其后续文件覆盖