同时复制文件和创建目标目录

我们通常使用以下命令将文件从一个位置复制到另一个现有位置 cp, rsync, 和 scp 等等。如果目标位置不存在,我们首先创建它,然后将文件复制到新创建的位置。 到目前为止,这就是我通常从命令行将文件从一个位置复制到另一个位置的方式。 您知道我们可以复制文件并在目标目录不存在时自动创建它吗? 不? 没问题! 在本指南中,我们将看到如何在 Linux 中使用单个命令同时复制文件和创建目标目录。

请注意,我不是在谈论组合两个命令。 例如,任何人都可以通过组合如下两个命令来做到这一点:

$ mkdir -p destination && cp source_file destination

但是,这不是一个单一的命令。 这里我们使用了两个命令,即 mkdircp. 它实际上是一个单行命令。 现在让我展示如何仅使用一个命令来完成相同的任务。

内容

  1. Linux中同时复制文件和创建目标目录
    1. 方法 1 – 使用安装命令
    2. 方法二——使用cp命令
    3. 方法 3 – 使用 rsync 命令

Linux中同时复制文件和创建目标目录

我们可以使用三种不同的方法来做到这一点。 首先我们将看到如何使用 install 命令。

方法 1 – 使用 install 命令

install 命令将文件复制到您在 Linux 中选择的任何目的地。 它是专门用于此目的的构建系统,例如 automake. 它是 GNU coreutils 的一部分,因此您无需安装它。

使用以下命令复制文件并同时创建目标目录 install 命令,只需运行:

$ install -D source-file destination-directory

例子:

以下命令复制一个名为 sk.txt 到名为的目标目录 ostechnix. 请注意目标目录不存在。 我们将复制文件并同时创建目标目录 install 命令如下:

$ install -D sk.txt ostechnix/sk.txt

验证文件是否已复制到 ostechnix 通过列出其内容的目录 ls 命令:

$ ls ostechnix/ sk.txt
使用安装命令复制文件并同时创建目标目录

看? 我之前没有创建目标目录。 install 命令会自动创建目录并将文件保存在其中。

好用吧? 的确! 这是一个有用的功能之一 install 命令。 可以在 shell 脚本中使用它。

这种方法有一些限制。 您必须在目标位置的末尾提及源文件名。 如果不指定文件名, install 命令不会复制它并显示以下错误:

$ install -D sk.txt ostechnix/ install: target 'ostechnix/' is not a directory: No such file or directory

您可以一次复制一个文件。 无法使用以下方法将多个文件复制到多个目的地 install 命令。

我们还可以使用以下方法复制文件并同时更改所有权、权限 install 命令,如以下指南中所述。

  • 如何复制文件并同时更改所有权、权限

有关安装命令的更多详细信息,请参阅其手册页。

$ man install

方法 2 – 使用 cp 命令

一般来说,我们使用 cp 命令将文件从一个地方复制到另一个地方。 这 cp 命令有一个名为的选项 --parents 这使我们能够复制源文件的整个目录结构并将其保存在目标中。

例如,让我们说, sk.txt 文件保存在 ~/Downloads 目录,您想将其复制到 ~/Documents 目录。 如果您使用复制文件 cp 命令来自 ~/Downloads~/Documents, 文件将保存在这样的目录结构中 -> ~/Documents/Downloads/sk.txt.

让我们实时进行,看看会发生什么。

$ cp --parents Downloads/sk.txt ~/Documents/

现在运行 tree 检查命令 ~/Documents 目录内容:

$ tree Documents/ Documents/ └── Downloads     └── sk.txt  1 directory, 1 file
使用cp命令复制文件并同时创建目标目录

记住我们没有在里面创建任何目录 ~/Documents 地点。 这 --parents 的选项 cp 命令保留了源文件的目录结构。

不像 install 命令,您不需要在目标目录的末尾指定文件名。

这与我们的主题没有直接关系。 然而 cp 命令自动创建目标目录,即保留源文件的目录结构。

方法 3 – 使用 rsync 命令

Rsync 是在本地和远程目录之间复制和备份数据的理想解决方案。 要使用 rsync 命令复制文件并创建目标目录,请运行:

$ rsync sk.txt ostechnix/

目录在哪里调用 ostechnix 不一定存在。 Rsync 将自动创建它并将源文件保存在其中。

使用 rsync 命令复制文件并同时创建目标目录使用 rsync 命令复制文件并同时创建目标目录

在这三个命令中,我更喜欢 install 命令。 因为,我可以使用创建嵌套目录(另一个目录中的目录) install 命令。 这 cprsync 命令只能创建一个目录,据我所知。 如果我错了,请纠正我。

相关阅读:

  • 复制文件或目录时如何保持所有权和文件权限不变

复制文件cp 命令安装命令LinuxLinux 基础知识Linux 命令Linux 提示rsync 命令