如何在同一命令中复制目录并重命名它?

如何在同一命令中复制目录并重命名它?

目前,我正在运行这两个命令来创建目录的快速备份。有没有一种方法可以将这两个命令合并为一个,以便我在一个命令中复制并重命名新目录?

#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21

答案1

你应该能够做到

cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21

然而,如果目标目录已经存在,这会将源路径的最后部分附加到目标路径,创建 /tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App,然后复制其中树的其余部分。

为了防止这种情况,请使用/tf/Custom_App/.作为源。当然,在这种情况下,rm -r /tf/Custom_App_backups/Custom_App_2017-12-21如果您不希望复制后旧文件躺在那里,您可能需要先这样做。

/some/dir和之间的区别/some/dir/.不久前已经讨论过当 时 cp 表现得很奇怪。 (点) 或 .. (点点) 是源目录

答案2

或者,您可以这样做:

mkdir /tf/Custom_App_backups/Custom_App_2017-12-21 # prepare the target location
cp -R /tf/Custom_app/. /tf/Custom_App_backups/Custom_App_2017-12-21 # copy only the contents

这将允许您预先指定您的自定义位置。另请注意,它使用后缀“/.这”允许您仅复制内容并排除其包含的文件夹 - 在本例中为文件Custom_app夹。

答案3

我偶然发现此页面寻找相同的建议。在我的 Ubuntu 20.04 (Focal Fossa) 系统上,我尝试了这个命令并使用了与 @ilkkachu 提供的相同的语法。除了我在 dest 文件夹中添加了一个尾部斜杠,例如 dest/ 。结果复制了源文件夹及其同级文件夹!当我在没有尾部斜杠的情况下重试时,得到了所需的结果。

因此,为了将来的参考,请注意,在 dest 文件夹中添加尾部斜杠也会复制源同级文件(.. 至少,这是我的经验)

答案4

您可以通过创建目标目录轻松继续:

mkdir Custom_App_2017-12-21
cd Custom_App_2017-12-21/
cp -R /tf/Custom_App/* .

最后一个命令会将所有相关文件复制到新建的目录中。

相关内容