通过示例掌握 Linux 复制文件命令
在任何操作系统上,复制文件和目录是用户最常见的操作之一。在Linux命令行中,您可以学习cp命令的正确用法,根据您的需要自定义和掌握文件复制。在本文中,我们将通过一些有用的示例来解释 Linux cp 命令的用法。
我们已在 Debian 10 Buster 系统上运行本文中提到的命令和示例,但您可以在几乎所有 Linux 发行版上复制它们。
Linux 命令行(终端)可以通过应用程序轻松访问。启动器搜索如下:
示例 1:将单个文件复制到目标目录
cp 命令最简单的用法是将单个源文件复制到目标目录。您可以使用以下语法来执行此操作:
示例:
在此示例中,我将名为 Sample_file.txt 的文件复制到我的 Documents 文件夹中:
后来我通过ls命令验证了目标文件夹中是否存在该文件。
示例2:将多个文件复制到目标目录
使用 cp 命令,您可以使用以下语法将多个文件复制到目标目录:
示例:
在此示例中,我通过 cp 命令将两个示例文件复制到我的 Documents 文件夹:
后来,我通过 ls 命令验证了目标文件夹中是否存在这些文件。
示例3:以交互方式复制文件
如果您的目标文件夹中存在同名文件,您可以在覆盖目标文件之前使用 cp 命令进行提示。您可以按以下方式使用 -i 开关:
示例:
在此示例中,我的 Documents 文件夹中已存在名为 example_file.txt 的文件,因此带有 -i 标志的 cp 命令会提示我是否要覆盖它。如果我在此提示下输入 y,该文件将被覆盖。
示例 4:复制文件以及详细输出
详细输出打印命令正在执行的操作。这可以通过 -v 开关合并到 cp 命令中,如下所示:
示例:
您可以在以下示例中看到 cp 命令如何在复制命令时打印详细输出:
示例 5:递归复制目录
将 -r 选项与 cp 命令结合使用可将目录中的所有文件和文件夹递归地复制到另一个位置。这是在这种情况下使用 cp 命令的方法:
示例:
在以下示例中,整个文件夹 1 及其所有文件将被复制到文件夹 2。
后来我通过ls命令验证了folder2的内容。现在,folder2 包含源文件夹的副本。
示例 6:在保留存档的同时递归复制目录
通过将 -a 开关与 cp 命令一起使用,您可以同时执行两件事:
将一个目录的文件递归复制到另一个目录
复制文件时保持权限、时间戳、符号链接和所有此类属性完好无损。
这是在这种情况下使用 cp 命令的方法:
示例:
在以下示例中,整个文件夹 1 及其所有文件都将复制到文件夹 2。此外,这些文件将被存档,稍后通过“ls -l 命令”进行验证。
示例 7:复制文件,以防它比目标文件新
有时,您只想将比目标文件新的文件复制到目标目录。这可以通过使用 cp 命令的 -u 开关来完成:
示例:
在此示例中,我从源文件夹中编辑了文件sample_file.txt。在我编辑文件之前,这些文件已被复制到目标文件夹。这可以在“ls -l”命令的以下输出中看到:
现在,当我将源文件夹复制到目标文件夹时,详细输出验证只有我编辑过的文件才会被复制。
示例 8:复制文件,但如果目标文件已存在,则不覆盖
如果文件已存在于目标位置,您可以告诉 cp 命令不要覆盖该文件。这可以通过 -n 开关来完成,如下所示:
示例:
在此示例中,我首先尝试将文件复制到该文件已存在的目标位置。 -i 开关提示我是否要覆盖它。
在第二个命令中,我添加了 -n 开关。它忽略了 -i 开关,但没有覆盖目标目录中已存在的文件。
示例 9:创建指向目标目录中文件的符号链接
使用 cp 命令中的 -s 开关,您可以在目标文件夹中创建指向源文件的符号链接,而不是复制源文件。
示例:
在以下示例中,我创建了指向目标文件夹中的文件sample_file.txt 的符号链接。
后来我通过“ls -l”命令验证了目标文件夹中是否存在符号链接。
示例 10:创建指向目标目录中文件的硬链接
当您创建指向另一个文件夹中的文件的硬链接时,该文件不会复制到目标文件夹;相反,会创建到源文件的硬链接。源文件和复制的硬链接的 inode 号是相同的。创建硬链接的方法如下:
示例:
在此示例中,我创建了指向 Documents 文件夹中的源文件的硬链接。
通过“ls -il”命令,我验证了原始文件和硬链接具有相同的 inode 编号。
为了掌握 Linux 中的 cp 命令,您只需要了解这些。通过使用这些切换的组合,您可以使文件复制更加可定制。