【问题标题】:mv: "Directory not Empty" - how do you merge directories with `mv`?mv: "Directory not Empty" - 你如何将目录与 `mv` 合并?
【发布时间】:2015-05-22 01:25:36
【问题描述】:

我最近尝试将我的个人博客网站部署到我的远程服务器。当我尝试通过执行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 here 上有很好的答案。

标签: mv


【解决方案1】:

如果您有子目录并且“mv”不起作用:

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

【讨论】:

    【解决方案2】:

    我终于找到了解决办法。因为/var/www/html/wp-content 已经存在,所以当你尝试在那里复制/var/www/html/wordpress/wp-content 时,会出现Directory not Empty 的错误。所以你需要将/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
    

    【讨论】:

    • 如果目标目录的 wp-content 已经包含一些您打算添加文件的非空目录,则会失败。
    【解决方案3】:

    我更喜欢通过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} 进行清理

    【讨论】:

      猜你喜欢
      • 2015-03-21
      • 1970-01-01
      • 2010-10-30
      • 2020-01-31
      • 1970-01-01
      • 2014-01-09
      • 2014-02-21
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多