通过 Ubuntu 命令行将一个文件同时复制到多个位置

作为一个命令行新手,您可能会觉得通过图形界面快速执行的相同任务可能会在命令行中要求大量命令。 但是,随着您通过学习、实践和经验慢慢成为命令行高级用户,您将开始注意到通过一些非常简单但有用的快捷方式可以非常快速地执行相同的任务。 在本文中,我们将描述一种这样的情况,显然可能需要运行很多命令,但实际上,一个简单的命令就可以为您完成任务。

有时,我们需要将单个文件复制到系统上的多个位置。 那么这是否意味着我们需要多次使用 cp 命令? 答案是不! 让我们进一步阅读以找到解决方案。

本文中提到的命令是在 Ubuntu 18.04 LTS 系统上运行的。

如何将一个文件同时复制到多个位置

我们都知道 cp 命令如何让我们通过以下语法将文件复制到新位置:

$ cp ~[/location/sourcefile] ~[/destinationfolder]

在这里,我将一个示例文本文件从我的 Downloads 文件夹复制到 Documents 文件夹:

现在,如果我想将同一个文件复制到两个不同的位置而不是一个,可能的解决方案似乎使用 cp 命令两次。

在这里,我两次使用 cp 命令将示例文本文件从 Downloads 文件夹复制到 Public 和 Desktop 文件夹:

复制文件两次

使用 cp 命令两次将同一个文件复制到两个位置似乎仍然合乎逻辑,但让我们假设我们必须将文件复制到三个、五个甚至更多位置。 以下是单个命令如何实现此目的。

句法:

$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp [/location/sourcefile]

在以下示例中,我将使用此命令将示例文本文件从我的下载文件夹同时复制到三个不同的文件夹:

使用一个命令将文件复制到两个位置

我们在一行中使用了 echo 命令和 xargs 命令来达到我们的目的。

该命令如何工作?

echo 命令将输出打印到屏幕上,但在我们的示例中,我们使用它通过 | 将输出提供给 xargs 命令。 象征。 xargs 命令将从 echo 命令获取输入三次,并执行三次 cp 操作,将示例文本复制到三个不同的位置。 n 计数告诉 cp 命令一次采用一个参数。

请注意,此命令将覆盖目标文件夹中已存在的同名文件。 因此,最好始终备份重要文件。 我们用于在覆盖操作之前询问的 i 选项不适用于 xargs 命令。

但是,如果文件已存在于目标文件夹中,则该命令的一种用途可以帮助您避免覆盖文件; 源文件前的 n 选项。

句法:

$ echo [destination1] [desctination2] [destiantion3]..... | xargs -n 1 cp n [/lcoation/sourcefile]

例子:

使用 xargs 命令

当您将非常大的文件从一个位置复制到另一个位置时,n 选项非常有用,尤其是通过网络。 通过这种方式,您可以避免在复制和替换现有文件时浪费资源。

运行本教程后,您离成为命令行大师又近了一步。 现在您不需要编写多个命令来执行将一个文件复制到不同位置的简单任务。 正如我们所描述的,您可以合并 echo 和 xargs 命令,以便为您的问题提供一个命令解决方案。