如何在复制目录后将其从源中删除?

如何在复制目录后将其从源中删除?

我只想移动目录。我依次查看了 mv、cp 和 rsync,因为每个工具似乎都没有在复制目录后从源中删除目录的选项。例如,当 src 和 dst 位于不同的设备上时,mv 需要文件,而不是目录:

“设备间移动失败:src 到 dst;无法删除目标:是一个目录”

也许最简单的方法是使用额外的删除命令,但我不想使用它,因为这会增加数据丢失的风险。

答案1

正如 Bob 所说。不幸的是,我(目前)无法发表评论,因此我必须在此处做出调整。我建议使用 Bob 命令的稍微修改版本:

cp -rp source-dir target-dir && rm -r source-dir;

双 & 符号确保只有第一个命令完成后才会执行第二个命令成功地——如果由于某种原因(例如目标卷上没有足够的空间)复制失败,并且源仍然会被删除,那将是一件可怕的事情......

答案2

实际上,动量可以“移动”目录;但不能跨设备或文件系统移动。它运行速度非常快,因为它所做的只是重新定义文件指针;内容本身不会被复制。

因此,您需要两个命令(复制然后删除)。在我的 Solaris 系统上,我使用这两个命令移动目录:

cp -rp source-dir target-dir; rm -r source-dir;

请参阅手册页,确保您使用适合您的环境以及可能存在的任何符号链接的正确语法。

相关内容