“mv parentdir/mydir ../mydir”之后我的目录去了哪里?

“mv parentdir/mydir ../mydir”之后我的目录去了哪里?

我以为我将子目录向上移动了一层,这样它就成为其父目录的兄弟目录了。但现在它完全不可见了。它消失了吗?

这是我使用的命令:

mv parentdir/mydir ../mydir

答案1

我找到了答案。我所做的就是更改名称,使其以 .. 开头,这样它就对“ls”命令隐藏了。

答案2

如果../mydir已经存在,则将其移入../mydir/mydir。否则它位于../mydir

在这样的命令中,路径是相对于当前工作目录的(除非路径以 开头/,在这种情况下它是绝对路径)。因此,您的命令并没有告诉mv它创建mydir的兄弟parentdir,而是告诉它创建mydir工作目录的兄弟。

您想要做的是以下两项之一:

# make parentdir/mydir to be a sibling of parentdir
$ mv parentdir/mydir ./
$ ls -1
parentdir
mydir

# make parentdir/mydir to be a sibling of parentdir
$ ( cd parentdir ; mv mydir ../ )
$ ls -1
parentdir
mydir

答案3

当运行诸如 、cp等命令时,如果第二个参数是目录,最安全的方式是以 , 结尾,这样您和命令都知道您在那里查找目录。例如,不要这样做:scpmv/.

$ mv /opt/foo /temp

我会做:

$ mv /opt/foo /temp/.

并收到错误消息:

mv: cannot move `/opt/foo' to `/temp/.': No such file or directory

因为,当然,我本想输入/tmp/.。如果我运行第一个命令,我就会默默地 — — 并且完全无意地 — — 重命名该目录。

相关内容