为啥将文件向上移动多个级别时“mv”命令不起作用[关闭]

Posted

技术标签:

【中文标题】为啥将文件向上移动多个级别时“mv”命令不起作用[关闭]【英文标题】:Why is the 'mv' command not working when moving a file up multiple levels [closed]为什么将文件向上移动多个级别时“mv”命令不起作用[关闭] 【发布时间】:2015-10-26 18:30:16 【问题描述】:

操作系统:SLES12 VM

所以我从一个目录开始: DirA/home/user/testA/testB

我的目标是将文件从这个目录移动到由 DirB_rel/home/user/testA/testB/../../deliverables/rpm/SOURCE

注意:testA 是一个符号链接,不包含在 DirB_abs

当我 cd 到它时,它会给出一个密码 DirB_abs:/home/user/deliverables/rpm/SOURCE

问题是,当我尝试使用mv(已尝试使用 tar.gz 和 .txt)将文件从 DirA 移动到 DirB_rel 时,该文件按预期从原始位置删除,但它没有出现在新位置因此丢失了。

例如mv testFile.txt DirB_rel -> 文件消失

但是,当我使用目录 B 的绝对路径时,mv 可以正常工作。

例如mv testFile.txt DirB_abs -> 成功

知道这里发生了什么吗?

谢谢!

【问题讨论】:

protip:如果将文件移动到目录,请始终使用尾部斜杠:mv myfile mydir/,这样如果 mydir 不存在,则会收到错误消息而不是创建 mydir 作为文件(如果 mydir 确实存在则相同,但作为文件在这种情况下结果将更加灾难性) 你在路径的某个地方有一些符号链接吗? @Nir Levy:是的,testA(包含在 DirB_rel 中,我无法将文件移动到的那个)是一个符号链接。有问题吗? 【参考方案1】:

问题出在符号链接上。当您执行user/testA/testB/../../ 并且 testA 是非符号链接时,您不会返回用户,而是返回目录 testA 链接到的父目录

【讨论】:

这就是问题所在!谢谢!【参考方案2】:

mv 命令将引用您当前所在的目录,而不是文件所在的目录。因此,如果我们在家 ~/ 并想将 ~/A/file 移动到 ~/B/file ,则使用 mv 如下:

mv A/file B/

注意如果你使用这个

mv A/file ../B/

该命令将在 /home/B 中查找 B 而不是 ~/B,因为我们位于发出命令的 ~/ 目录中。

【讨论】:

希望这能回答你的问题,如果不是,那么如果你可以改写你的问题,因为它有点令人困惑。 谢谢,不过我知道这一点。我正在使用的makefile 试图mv 一个文件从当前目录到 DirB_abs 但使用 DirB_rel 来实现这一点。在我看来,它们应该是相同的,尽管 testA 是一个符号链接。

以上是关于为啥将文件向上移动多个级别时“mv”命令不起作用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

linux下同时移动多个文件夹命令mv

linux下同时移动多个文件夹命令mv

linux 怎样把一个文件夹下的文件移动到另一个文件夹

在 github 操作中运行时 mv 命令不起作用

为啥 libnds 中的 keysDownRepeat() 在多次调用时似乎不起作用?

我可以在 macOS 上使用终端命令“mv”移动多个文件吗?