使用 mv 时出错

使用 mv 时出错

当我尝试 mv 一些毫无意义的文件时,我收到一个错误。我收到此错误:

mv: cannot move `thatDir' to a subdirectory of itself, `/usr/local/apache-tomcat-6.0.32/webapps/thatDir'

运行以下命令来替换 /webapps 中已存在的 thatDir 时:

From /home/myUser/war_files/ 
mv thatDir /usr/local/apache-tomcat-6.0.32/webapps

我也尝试了所有方法:

sudo mv /home/myUser/war_files/thatDir /usr/local/apache-tomcat-6.0.32/webapps

运气不好。我拥有执行此操作所需的权限(而且我还使用了 sudo),但仍然没有任何结果。我办公室的其他人(不再在这里工作)也执行过同样的操作。

我尝试过在谷歌上搜索,甚至看到了关于 serverfault 的另一个问题,但每个人都说了与该问题相同的评论:“也许其中涉及符号链接,而你不知道。”

这不是问题。我尝试使用 readlink -e 查看目录(如另一张票中的评论所建议的那样),但没有涉及任何符号链接。

任何帮助,将不胜感激。

与此相关的另一个问题的链接: 无法将文件夹移动到其自身的子目录中-发生了什么?


正如我在下面的评论回复中提到的,以下是重现此问题的步骤。正如您将看到的,链接可能不是造成此问题的原因(此外,我使用的是 bash unix):

mkdir /home/myUser/testOuter    
cd /home/myUser/testOuter
mkdir test1
cd test1
mkdir moveMe
cd moveMe
touch testfile1.txt
cd ../..
mkdir test2
cd test2
mkdir moveMe
cd moveMe
touch testfile2.txt
cd ../../test1
mv moveMe ../test2

然后我得到错误输出:

mv: cannot move `moveMe' to a subdirectory of itself, `../test2/moveMe'

但它显然不在其自身的子目录中,也没有涉及任何链接。

如果我从中删除文件,它可以工作,test2/moveMe/但这是不可接受的,因为我需要用 test2 覆盖 test1 中的所有文件,保留 test2 中不存在的 test1 中的现有文件(例如用户生成的内容),并移入 test2 中尚不存在的任何文件。(即,定期的、每天的移动操作)。

答案1

实际上,读一下你正在尝试做的事情,你可能会遇到这个错误有人指出,当您尝试用另一个目录覆盖非空目录时(这是不允许的),您会收到一条不正确的错误消息。

相关内容