原文: The Linux cp Command – How to Copy Files in Linux

当你在电脑上工作时,有几种不同的方式来复制和粘贴内容。

如果你花更多时间在设备的用户界面上,你可能会用鼠标来做这个。你可以通过右键单击文件并选择“复制”,然后进入不同的目录并选择“粘贴”来复制文件。

对于使用终端的朋友来说,你也可以在不离开终端的情况下进行文件复制-粘贴操作。在基于 Linux 的终端中,你可以使用 cp 命令来完成这一操作。

在这篇文章中,我将解释什么是 cp 命令,并告诉你如何在 Linux 中使用终端复制和粘贴文件和目录。

什么是 cp 命令

你使用 cp 命令将文件从一个地方复制到另一个地方。这个命令也可以复制目录(文件夹)。

这个命令的语法是:

cp [...file/directory-sources] [destination]

[file/directory-sources] 指定你要复制的文件或目录的来源。而 [destination] 参数则指定了你想复制文件的位置。

为了理解本文的其余部分,我将使用这个文件夹结构的例子。假设一个名为 DirectoryA 的目录,里面有两个目录,DirectoryA_1DirectoryA_2。这些子目录里有许多文件和子目录。

我还将假设你目前在终端中的 DirectoryA 位置:

cd DirectoryA

如何用 cp 命令复制文件

如果你想复制一个文件,比如 README.txt,从 DirectoryA_1 复制到 DirectoryA_2,你将这样使用 cp 命令:

cp ./DirectoryA_1/README.txt ./DirectoryA_2
# ./DirectoryA_1/README.txt is the source file
# ./DirectoryA_2 is the destination

如果你想从 DirectoryA_1 复制一个以上的文件到 DirectoryA_2,你会这样使用 cp 命令:

cp ./DirectoryA_1/README.txt ./DirectoryA_1/ANOTHER_FILE.txt ./DirectoryA_2

正如你所看到的,你将把所有的源文件放在前面,而最后一个参数将是目的文件。

如何用 cp 命令复制目录

默认情况下,cp 命令对文件起作用。因此,如果你试图像这样复制一个目录:

cp ./DirectoryA_1/Folder/ ./DirectoryA_2

你将得到一个错误:

./DirectoryA_1/Folder/ is a directory

要复制目录,你必须传入 -r 标志。这个标志通知 cp 命令递归地复制一个目录及其内容(可以是文件或其他子目录)。因此,对于前面的命令,你可以在目录源之前加上这个标志,像这样:

cp -r ./DirectoryA_1/Folder/ ./DirectoryA_2

这个命令将递归复制 ./DirectoryA_1/ 中的 Folder 目录,以及 Folder 目录中的所有文件和目录。

如何复制符合 glob 模式的文件

glob 模式类似于 Regex,它允许你匹配多个名称与特定模式相匹配的文件。在这里可以了解到更多的区别:Regex vs Glob 模式

例如,如果你想复制 DirectoryA_1 中所有扩展名为 .txt 的文件,你可以执行这个命令:

cp ./DirectoryA_1/*.txt ./DirectoryA_2

./DirectoryA_1/*.txt 匹配名字中带有 .txt 扩展名的文件,cp 命令可以将所有这些文件复制到目的地。

你可以查看 glob 文档,了解更多关于可以使用的 glob 模式和字符。

现在你知道如何从命令行中直接复制文件(和目录)了。谢谢你阅读本文!