cp(复制)
100%

命令行 · 第 10 课

cp(复制)

学习复制文件和目录树,并控制覆盖行为与保留的属性。

cp 命令复制文件和目录,同时把源文件留在原处。其基本语法是:

cp [OPTIONS] SOURCE DESTINATION

你可以将一个文件复制到另一个文件,将一个或多个文件复制到目录,或者使用正确的选项复制整个目录树。

复制单个文件

要复制文件,你需要指定源文件和目标目录或路径。

$ cp mycoolfile /home/pete/Documents/cooldocs

如果 /home/pete/Documents/cooldocs 是现有目录,副本会以 mycoolfile 为名创建在其中。也可以提供新的目标文件名:

$ cp mycoolfile /home/pete/Documents/mycoolfile_backup

在第二个示例中,复制的数据会获得 mycoolfile_backup 这个名称。

哪个命令会把 draft.txt 复制为名为 final.txt 的文件,同时保留 draft.txt

将多个文件复制到目录

要将多个文件复制到同一目录,先列出所有源文件,最后写目标目录。

$ cp report.txt notes.txt summary.txt /home/pete/Documents/

当你提供多个源文件时,最后一个参数必须是目录。

哪个命令会把 a.txtb.txt 复制到现有的 archive/ 目录?

使用通配符选择文件

通配符是特殊字符,帮助你基于模式选择多个文件,提供极大的灵活性。

  • *:匹配任意字符序列。
  • ?:匹配任意单个字符。
  • []:匹配括号内的任意一个字符。

例如,要将当前目录下所有 JPEG 图片复制到 Pictures 目录:

$ cp *.jpg /home/pete/Pictures

批量复制前应预览匹配项,尤其是目标中含有重要数据时:

$ ls *.jpg
beach.jpg  lunch.jpg  profile.jpg
$ cp *.jpg /home/pete/Pictures

复制 *.jpg 前,哪个命令会显示该模式当前匹配到的非隐藏名称?

复制目录树

如果你尝试使用 cp 复制目录而不加任何选项,会收到错误。要复制目录及其所有内容(包括子目录),必须使用 -r(递归)标志。

$ cp -r Pumpkin/ /home/pete/Documents

此命令将 Pumpkin 目录及其所有内容复制到你的 Documents 目录。

你也可能看到 -R,在典型 Linux 系统中它具有相同的递归作用:

$ cp -R website /home/pete/backups/

归档模式 -a 适合备份式复制。它会递归复制,同时保留链接和许多文件属性:

$ cp -a project/ project-backup/

你想对 project/ 进行递归的备份式复制,并保留链接和许多属性。哪个命令符合要求?

控制覆盖行为

默认情况下,如果目标位置有同名文件,cp 会覆盖它。为了防止意外数据丢失,可以使用 -i(交互式)标志,覆盖前会提示确认。

$ cp -i mycoolfile /home/pete/Pictures
cp: overwrite '/home/pete/Pictures/mycoolfile'? n

如果现有目标不应被覆盖,请使用 -n

$ cp -n mycoolfile /home/pete/Pictures

-f 会让 GNU cp 在无法打开现有目标进行写入时尝试先删除它,再重试复制。它不能替代对目标的谨慎检查。shell 别名也可能自动添加 -i 等选项,因此遇到意外提示时应检查配置,不要想当然。

哪个命令会把 report.txt 复制到 backup/,但在同名目标已存在时跳过它?

保留属性或刷新文件

复制文件时,其元数据(如修改时间和所有权)通常会被更新。要保留这些原始属性,请使用 -p 选项。

$ cp -p mycoolfile /home/pete/backups/

-u 选项仅在源文件比目标文件新,或者目标文件不存在时才复制。

$ cp -u *.txt /home/pete/Documents/

其他常用选项包括:

  • -f:强制覆盖,必要时先删除目标文件。
  • -v:显示复制的每个文件。

要练习复制文件和目录树,可以尝试以下动手实验:

  1. Linux cp 命令:文件复制 - 练习基本用法、高级选项如递归复制、保留属性以及使用通配符高效复制文件和目录。
  2. 文件和目录的组织 - 通过使用 cpmvrm 命令,练习 Linux 文件管理技能,组织项目结构,移动文件,清理不必要的目录。

课程已完成

你已完成 cp(复制)

现在,你可以复制文件和目录树,并控制如何处理目标。

  • 把源操作数放在目标之前。

  • 批量复制前预览通配符匹配项。

  • 递归复制目录树或使用归档模式。

  • 确认、跳过或有意识地替换现有目标。

  • 按需保留属性或只复制较新的源文件。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 命令行