mv命令报错"目录非空" - 如何使用mv合并目录?

18

最近我尝试将我的个人博客网站部署到远程服务器上。当我执行mv命令尝试将一些文件和目录移动到其他位置时,出现了一些意外的错误,命令行提示“目录不为空”。经过一番搜索后,我尝试使用'-f'开关或'-v'重新尝试,但结果相同。我登录到root账户,并且进程在此:

root@danielpan:~# shopt -s dotglob
root@danielpan:~# mv /var/www/html/wordpress/* /var/www/html
mv: cannot move `/var/www/html/wordpress/wp-content` to `/var/www/html/wp-content`: 
Directory not empty
root@danielpan:~# mv -f /var/www/html/wordpress/* /var/www/html
mv: cannot move `/var/www/html/wordpress/wp-content` to `/var/www/html/wp-content`:
Directory not empty

有人知道为什么吗?

(我正在运行Ubuntu 14.04)


这里有一个关于unix.stackexchange的好回答 链接 - TamaMcGlinn
3个回答

31

如果您有子目录,而“mv”命令无法使用:

cp -R source/* destination/ 
rm -R source/

3

我更喜欢使用tar命令来复制目录,而不是使用cprsync

cd ${source_path}
find . -type d -exec mkdir -p ${destination_path}/{} \;
find . -type f -exec mv {} ${destination_path}/{} \;
cd $oldpwd

该命令用于移动文件(实际上是重命名),并覆盖现有文件。因此它的速度相当快。 但当${source_path}包含空子文件夹时,可以通过rm -rf ${source_path}进行清理。


2
我终于找到了解决方法。因为/var/www/html/wp-content已经存在,所以当你试图将/var/www/html/wordpress/wp-content复制到那里时,会出现“目录不为空”的错误。所以你需要将/var/www/html/wordpress/wp-content/*复制到/var/www/html/wp-content中。 只需执行以下命令即可:
mv /var/www/html/wordpress/wp-content/* /var/www/html/wp-content
rmdir /var/www/html/wordpress/wp-content
rmdir /var/www/html/wordpress

14
如果目标目录的 wp-content 文件夹已经包含一些非空文件夹,并且您打算将文件添加到其中,则该方法会失败。 - TamaMcGlinn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接