mv 目录和内容到新目录

IGG*_*GGt 9 mv

我有一个目录: /var/lib/mysql/test_db/ 其中包含构成test_db数据库的许多文件

我现在已经创建了一个新目录: /var/lib/mysql/data/

我正在尝试将test_db目录及其内容移动到data目录中。

我试过各种命令围绕

sudo mv /var/lib/mysql/test_db/ /var/lib/mysql/data/test_db/
Run Code Online (Sandbox Code Playgroud)

但我不断收到错误消息:

mv: cannot move /var/lib/mysql/test_db/ to /var/lib/msyql/data/test_db/: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但如果我跑: ls -lah

我得到

drwxrwxrwx  2 root  root    32K Mar 27 15:58 test_db
drwxrwxrwx  3 mysql mysql  4.0K Mar 30 10:51 data
Run Code Online (Sandbox Code Playgroud)

据我所知,这意味着它们都是目录,因此都存在。

如您所见,我已更改了它们的权限 ( chmod 777 test_db),但这不起作用。

我错过了什么?

roa*_*ima 16

删除目标数据库目录并移动test_db目录本身。(这也将隐式移动其内容。)

sudo rmdir /var/lib/mysql/data/test_db
sudo mv /var/lib/mysql/test_db /var/lib/mysql/data
Run Code Online (Sandbox Code Playgroud)

通常,您不需要在目录名称上提供尾部斜杠。

阅读您的评论后,如果您发现仍然出现“没有这样的文件或目录”错误,则可能是您的源目录test_db已经移动到目标test_db目录中(给您/var/lib/mysql/data/test_db/test_db/...)。如果是这种情况,那么rmdir上面的操作也会失败,并显示“没有这样的文件或目录”错误。使用此命令修复它,然后重新运行此答案顶部的两个:

sudo mv /var/lib/mysql/data/test_db/test_db /var/lib/mysql/data
Run Code Online (Sandbox Code Playgroud)


pet*_*try 10

你的命令:

sudo mv /var/lib/mysql/test_db/ /var/lib/mysql/data/test_db/
Run Code Online (Sandbox Code Playgroud)

是为了/var/lib/mysql/test_db/ 向内 移动/var/lib/mysql/data/test_db/,并以/var/lib/mysql/data/test_db/test_db/. 但是由于/var/lib/mysql/data/test_db/不存在,您会收到错误消息。

你应该运行:

sudo mv /var/lib/mysql/test_db/ /var/lib/mysql/data/
Run Code Online (Sandbox Code Playgroud)

已经/var/lib/mysql/test_db/搬进去了/var/lib/mysql/data/