通过 Ubuntu 命令行将一个文件同时复制到多个位置
作为命令行新手,您可能会觉得通过图形界面快速执行的相同任务可能需要在命令行中执行大量命令。然而,当您通过学习、练习和经验慢慢成为命令行高级用户时,您会开始注意到通过一些非常简单但有用的快捷方式可以非常快速地执行相同的任务。在本文中,我们将描述一种这样的情况,表面上可能需要运行很多命令,但实际上,一个简单的命令就可以为您完成任务。
有时,我们需要将单个文件复制到系统上的多个位置。那么这是否意味着我们需要多次使用 cp 命令?答案是不!让我们进一步阅读以找到解决方案。
本文提到的命令已在 Ubuntu 18.04 LTS 系统上运行。
如何将一个文件同时复制到多个位置
我们都知道 cp 命令如何让我们通过以下语法将文件复制到新位置:
cp ~[/location/sourcefile] ~[/destinationfolder]
在这里,我将示例文本文件从“下载”文件夹复制到“文档”文件夹:
现在,如果我想将同一个文件复制到两个不同的位置而不是一个,可能的解决方案似乎是使用 cp 命令两次。
在这里,我使用 cp 命令两次将示例文本文件从“下载”文件夹复制到“公共”和“桌面”文件夹:
使用 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]
例子 :
当您将非常大的文件从一个位置复制到另一个位置时(尤其是通过网络),n 选项非常有用。这样您就可以避免在复制然后替换现有文件时浪费资源。
运行本教程后,您距离成为命令行大师又近了一步。现在,您无需编写多个命令来执行将一个文件复制到不同位置的简单任务。正如我们所描述的,您可以合并 echo 和 xargs 命令,以便用一个命令解决您的问题。