Skip to content

Latest commit

 

History

History
113 lines (83 loc) · 3.37 KB

cp.md

File metadata and controls

113 lines (83 loc) · 3.37 KB

date: 2020-10-20T09:26:21+08:00 # 创建日期 author: "Rustle Karl" # 作者

文章

title: "cp 复制" # 文章标题

description: "文章描述"

url: "posts/linux/tools/standard/cp" # 设置网页永久链接 tags: [ "linux", "cmd" ] # 标签 series: [ "Linux 学习笔记" ] # 系列 categories: [ "学习笔记" ] # 分类

章节

weight: 20 # 排序优先级 chapter: false # 设置为章节

index: true # 是否可以被索引 toc: true # 是否自动生成目录 draft: false # 草稿

将源文件或目录复制到目标文件或目录中

cp 命令 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp 命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。

建议:

alias cp="rsync -ah --progress"

格式

cp [OPTION]... [-T] SOURCE DEST

cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

选项

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

参数

  • 源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-r/R选项;
  • 目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

示例

  1. 复制文件夹
cp -t demo backup

实例

复制目录下所有到另一个目录下

cp aaa/* /bbb
# 复制目录 aaa 下所有到 /bbb 目录下,这时如果 /bbb 目录下有和 aaa 同名的文件,需要按 Y 来确认并且会略过 aaa 目录下的子目录。
cp -r aaa/* /bbb
# 这次依然需要按Y来确认操作,但是没有忽略子目录。
cp -a aaa/* /bbb
# 依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。

递归强制复制目录到指定目录中覆盖已存在文件

cp -rfb ./* ../backup
# 将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中

拷贝目录下的隐藏文件

cp -r aaa/.* ./bbb
# 将 aaa 目录下的,所有`.`开头的文件,复制到 bbb 目录中。

cp -a aaa ./bbb/ 
# 记住后面目录最好的'/' 带上 `-a` 参数

复制到当前目录

cp aaa.conf ./
# 将 aaa.conf 复制到当前目录