我对这个mv命令有疑问.
为了移动和重命名文件,我mv file someDir/File2在终端中进行了操作,并将文件移动到someDir名为的新名称File2.
但是,当我使用shell脚本执行此操作时,它会将该File2部件视为目录,而不是文件的新名称.
所以我有两个变量NEWDir=newDir,NEWF=newName
for i in *.txt ; do
mv $i $NEWDIR/$NEWF
done
Run Code Online (Sandbox Code Playgroud)
我运行这个脚本,它说如下:
mv: target 'newName' is not a directory.
Run Code Online (Sandbox Code Playgroud)
mv 仅在给出多个源参数时才要求目标为目录.
在这种情况下,这可能是由于缺少引用而导致变量被拆分造成的.使用双引号 - 如http://shellcheck.net/指示 - 围绕所有扩展.
for i in *.txt ; do
mv "$i" "$NEWDIR/$NEWF"
done
Run Code Online (Sandbox Code Playgroud)
请注意,只有迭代的最后一个文件实际上会留下给定的名称 - 其余文件将被其后继者覆盖.