Linux/Unix 中的 cp 命令 | Linux 复制文件17 Mar 2025 | 6 分钟阅读 'cp' 表示复制。'cp' 命令用于复制文件或目录。 cp 命令简介cp 命令用于复制目录和文件。该命令包含三种主要操作模式,通过展示给程序的参数类型来表示,用于将文件复制到其他文件,将多个文件复制到任何目录,或将整个目录复制到其他目录。 此外,该实用程序还接受多个命令行选项标志来详细说明已实现的操作。两个主要规范是 GNU cp 和 POSIX cp。GNU cp 包含比 POSIX 版本更多的选项。此外,该命令在 EFI shell 中可用。 cp 命令的操作系统模式cp 命令包含三种主要操作系统模式。这些模式是通过程序调用时显示的参数的数量和类型来完成的。
cp 命令选项
稀疏 SOURCE 文件通过廉价的启发式方法找到,并且相关的 DESR 文件默认创建为稀疏的。这是 --sparse=auto 所选择的行为。我们可以描述 --sparse=always 以在 SOURCE 文件包含足够长的零字节序列时创建稀疏的 DEST 文件。我们也可以应用 --sparse=never 来限制稀疏文件的创建。 如果提到了 --reflink[=always],则实现轻量级复制,其中数据块仅在更改时才被复制。如果不可能或提到了 --reflink=auto,则复制失败并回退到标准复制。我们也可以应用 --reflink=never 来保证实现标准复制。 要将文件复制到同一目录,语法如下: ![]() 在上图的快照中,我们创建了 'docu' 的副本并命名为 'newdocu'。如果 <新文件名>(在本例中是 'newdocu')已经存在,则它将简单地覆盖先前的文件。 将文件复制到另一个目录我们需要指定目标目录的路径。 在下面的快照中,之前不存在 'text' 文件。在给出命令后,'text' 文件已复制到目标目录 'Desktop'。 ![]() Linux cp -r复制命令的 'r' 选项可用于将目录及其所有内容从源目录复制到目标目录。 语法 示例 ![]() 在上例中,我们将目录 'library' 复制到了目标目录 /home/sssit/Documents。这里,'library' 目录的所有内容(包括其内容)都被复制到了目标目录。 Linux 复制多个文件或目录可以一次性将多个文件或目录复制到目标目录。在这种情况下,目标必须是一个目录。要复制多个文件,可以使用具有相同模式的 **通配符** (cp *.extension)。 语法 示例 ![]() 在上例中,我们将扩展名相同的 '.txt' 文件(file1, file2, file3)复制到了 Documents 目录。 Linux cp --backup如果要复制的文件已存在于目标目录中,可以使用此命令备份现有文件。 语法 示例 ![]() 如上所示,'file2.txt' 已存在于目标目录中。因此,我们创建了该文件的备份并将其复制到同一目录(具有相同名称)。 现在我们的目标目录 'Downloads' 中有两个同名文件(即 'file2.txt')。 Linux cp -icp '-i' 选项允许您在覆盖文件之前确认一次。 语法 示例 ![]() 如您所见,它正在询问是否允许覆盖文件 'file3.txt',因为该文件已存在于目标目录中。现在,您可以按 y 覆盖文件,按 n 不覆盖文件。 Linux cp -l如果要创建文件的硬链接而不是复制该文件,可以使用选项 'l'。 注意: 在创建文件的硬链接时,两个文件的 inode 号将保持不变。而在复制时,inode 号会改变。 语法 示例 ![]() 请注意,我们在 'usr' 中创建了文件 'file1.txt' 的硬链接。两个文件的 inode 号是相同的。 Linux cp -pcp '-p' 选项用于保留文件的属性和元数据。您也可以保留您想要保留的选定属性。 语法 示例 ![]() 现在,您可以匹配上图中的两个文件(原始文件和复制的文件),它们具有相同的属性。 Linux cp -u -v当您想确保目标文件缺失或不存在时,使用 cp -u -v 命令。 语法 示例 ![]() 在上图中,您可以看到有两个文件 'docc' 和 'file1.txt'。现在我们要将这两个文件复制到 'Download' 目录。但是我们不知道 'Downloads' 目录中是否已存在文件 'file1.txt'。 使用命令 'cp -u -v' 将自动处理已存在的文件(file1.txt),而不会覆盖它。 此命令对于复制大文件很有用。 下一个主题Linux mv 命令 |
我们请求您订阅我们的新闻通讯以获取最新更新。