我们通常使用以下命令将文件从一个位置复制到另一个现有位置 cp
, rsync
, 和 scp
等等。如果目标位置不存在,我们首先创建它,然后将文件复制到新创建的位置。 到目前为止,这就是我通常从命令行将文件从一个位置复制到另一个位置的方式。 您知道我们可以复制文件并在目标目录不存在时自动创建它吗? 不? 没问题! 在本指南中,我们将看到如何在 Linux 中使用单个命令同时复制文件和创建目标目录。
请注意,我不是在谈论组合两个命令。 例如,任何人都可以通过组合如下两个命令来做到这一点:
$ mkdir -p destination && cp source_file destination
但是,这不是一个单一的命令。 这里我们使用了两个命令,即 mkdir
和 cp
. 它实际上是一个单行命令。 现在让我展示如何仅使用一个命令来完成相同的任务。
内容
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
记住我们没有在里面创建任何目录 ~/Documents
地点。 这 --parents
的选项 cp
命令保留了源文件的目录结构。
不像 install
命令,您不需要在目标目录的末尾指定文件名。
这与我们的主题没有直接关系。 然而 cp
命令自动创建目标目录,即保留源文件的目录结构。
方法 3 – 使用 rsync
命令
Rsync
是在本地和远程目录之间复制和备份数据的理想解决方案。 要使用 rsync 命令复制文件并创建目标目录,请运行:
$ rsync sk.txt ostechnix/
目录在哪里调用 ostechnix
不一定存在。 Rsync 将自动创建它并将源文件保存在其中。
在这三个命令中,我更喜欢 install
命令。 因为,我可以使用创建嵌套目录(另一个目录中的目录) install
命令。 这 cp
和 rsync
命令只能创建一个目录,据我所知。 如果我错了,请纠正我。
相关阅读:
- 复制文件或目录时如何保持所有权和文件权限不变
复制文件cp 命令安装命令LinuxLinux 基础知识Linux 命令Linux 提示rsync 命令