Linux 文件复制命令详解:cp 实用指南
命令简介
cp 命令用于在 Linux 系统中复制文件或目录。该命令能够将一个或多个源文件或目录复制到指定的目标位置。当复制单个文件时,可以将其复制为具有特定名称的新文件或复制到已存在的目录中。cp 命令还支持同时复制多个文件,在此情况下,目标参数必须是一个已存在的目录,否则操作将失败。
值得注意的是,cp 命令还具有重命名文件的功能。
语法格式
cp [选项] [源文件或目录] [目标文件或目录] cp [option] source destination cp [option] source directory
注意:默认情况下,cp 命令无法直接复制目录,需要与 -R 选项配合使用。
选项说明
| -a | 此参数的效果等同于同时指定 "-dpR" 参数 |
| -d | 当复制符号链接时,将目标文件或目录也创建为符号链接,并指向源文件或链接的原始文件或目录 |
| -f | 强制复制文件或目录,无论目标文件或目录是否已存在 |
| -i | 覆盖现有文件前先询问用户确认 |
| -l | 为源文件创建硬链接,而非复制文件 |
| -p | 保留源文件或目录的属性 |
| -R/r | 递归处理,将指定目录下的所有文件与子目录一并处理 |
| -s | 为源文件创建符号链接,而非复制文件 |
| -u | 仅当源文件的修改时间较目标文件更新,或对应的目标文件不存在时才复制文件 |
| -S | 备份文件时,用指定的后缀 "SUFFIX" 替代文件的默认后缀 |
| -b | 覆盖已存在的文件目标前,先将目标文件备份 |
| -v | 详细显示命令执行的操作过程 |
应用实例
复制文件示例
# 复制文件并重命名 cp /data/source/file.txt /data/destination/renamed.txt # 复制文件到目录 cp /data/source/file.txt /data/destination/ # 复制多个文件到目录 cp /data/source/file1.txt /data/source/file2.txt /data/destination/ # 使用交互模式复制文件 cp -i /data/source/file.txt /data/destination/existing_file.txt # 保留属性复制文件 cp -p /data/source/file.txt /data/destination/ # 创建硬链接而非复制 cp -l /data/source/file.txt /data/destination/hardlink.txt # 创建符号链接而非复制 cp -s /data/source/file.txt /data/destination/symlink.txt
目录复制示例
# 递归复制目录 cp -r /data/source/directory /data/destination/ # 保留所有属性复制目录 cp -a /data/source/directory /data/destination/ # 强制复制目录(覆盖已存在文件) cp -rf /data/source/directory /data/destination/ # 仅更新已修改的文件 cp -u /data/source/directory /data/destination/ # 复制目录并显示详细过程 cp -rv /data/source/directory /data/destination/
批量复制文件示例
# 复制所有 .txt 文件
cp /data/source/*.txt /data/destination/
# 复制所有以字母 a 开头的文件
cp /data/source/a* /data/destination/
# 复制多个特定文件
cp /data/source/{file1.txt,file2.txt,file3.txt} /data/destination/
cp 命令行为规则
- 当源是文件,目标也是文件时,将覆盖目标文件
- 当源是文件,目标文件不存在时,将创建新文件
- 当源是文件,目标是目录时,将文件复制到该目录下
- 当源是多个文件,目标是单个文件时,复制操作失败
- 当源是多个文件,目标是目录时,将所有文件复制到该目录下
- 当源是多个文件,目标目录不存在时,复制操作失败
- 当源是目录,目标是文件且存在时,复制操作失败
- 当源是目录,目标是目录不存在时,将创建新目录
- 当源是目录,目标是目录且存在时,将源目录复制为目标目录的子目录,保持原名