当前位置: 首页>>技术教程>>正文


mv:目录不为空

, ,

问题描述

我想用另一个文件夹移动另一个目录中的目录内容。

这是一个例子:

我有./backup,有basetest。现在我想在./backupArchives中移动这些目录。

我使用这个:

mv ./backup/* ./backupArchives

但我得到了错误

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

我尝试使用--force,但没有运气。当文件夹已经存在时,是否有办法移动它?

注意:我只想合并内容,不会覆盖。

最佳解决办法

尽管其手册页没有记录它,但如果目标目录包含文件,mv将拒绝将目录重命名为另一个目录。这对你来说是件好事,因为你希望将源代码的内容合并到目标中,而mv不会这样做。

改用rsync -a backup/ backupArchives/。之后,rm -rf backup/*

而不是使用rsync,你也可以做经典的

(cd backup && tar c .) | (cd backupArchives && tar xf -)

这让你获得更多的怪胎点。

次佳解决办法

快速和肮脏,如果你知道你在做什么:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

第三种解决办法

移动目录后,您需要*(代表任何文本或数字)。例如:

mv /var/www/* /recovery/wwwrecovery/

多数民众赞成在所有,如果你移动文件,比你移动为:

mv /var/www/index.php /recovery/index.php

另一种方法是使用tar打包文件夹内容:

tar -cvzpf backup.tar.gz /var/www 

然后移动它躺在任何其他文件。此外,我建议这一步,因为焦油压缩它,并使其体积更小。

将文件解压到另一个文件夹使用

tar -xvzpf /var/www/

如果您需要复制到您不属于的位置,请确保在您决定使用哪个选项后,使用sudo命令预先安装命令。

sudo tar -cvzpf backup.tar.gz /var/www/

第四种办法

当然,rsync可以工作,但对于不支持rsync的机器(即在cpanel中,默认情况下未安装rsync),这可能也适用。

怎么样使用:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

然后根据需要删除backup目录

注1:在执行cp -R --parents ...之前,您需要cdbackup目录

注2:如果从备份中获得新文件,请仔细检查backupArchives目录。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/547.html,未经允许,请勿转载。