关于cp
cp是一个复制(多个)文件和(多个)目录的一个指令。
语法
cp [option]... [-T] source destination
cp [option]... source... directory
cp [option]... -t directory source...
cp --version
cp --help
注释:这里的…前面的参数可以多个,比如说[option]… 指的是选项不只一个。
选项
op
option | meaning |
---|---|
-a | 此参数的效果和同时指定”-dpR”参数相同(不知道什么意思) |
-d | 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录 |
-f | 强行复制文件或目录,不论目标文件或目录是否已存在 |
-i | 覆盖既有文件之前先询问用户 |
-l | 对源文件建立硬连接,而非复制文件 |
-p | 保留源文件或目录的属性 |
-R/r | 递归处理,将指定目录下的所有文件与子目录一并处理 |
-s | 对源文件建立符号连接,而非复制文件 |
-u | 使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件 |
-S | 在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀 |
-b | 覆盖已存在的文件目标前将目标文件备份 |
-v | 详细显示命令执行的操作 |
源文件|制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件|指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
例子说明
例子一:假设我的桌面a文件夹有一张图片名字叫做:picture.jpeg,现将其复制至同一文件夹,仅需要这么键入指令:(前提是你已经在该文件夹内)
原来:
cp picture.jpeg picture-02.jpg
这里需要注意的是,如果在此目录下已经存在picture-02.jpeg,那么cp默认是覆盖原有内容,加上-i选项,将会提示用户文件已经存在,是否覆盖:
cp -i picture.jpeg picture-02.jpg
wodeMBP:a wo$ cp -i picture.jpeg picture-02.jpeg
overwrite picture-02.jpeg? (y/n [n])
例子二:源文件和目标文件不在同一目录下,比如:将桌面上的a文件夹放到b文件夹中怎么实现?
cp ./Desktop/a/picture.jpg ./Desktop/a/picture-03.jpg
因为我们终端默认打开的是/home/user/wo 目录。所以我们就不用再打
cp /home/user/wo/Desktop/a/picture.jepg /home/user/wo/Desktop/b/picture-03.jepg
这一般都是在系统根目录下才这么打。
例子三:复制多个文件到一个目录
如果多个文件在同一文件夹内,且后缀一样,我们可以通过通配符实现
cp ./Desktop/a/*.jpeg ./Desktop/b/backup
需要注意的是目标文件夹必须存在,否则会报错。
或者两个文件根本不在一个文件夹内,在目录之前,会被系统识别为文件,所以我们可以在目录之前键入多个文件路径实现不同地方的文件复制。
wodeMBP:Desktop wo$ cp ./a/picture.jpeg ./b/banana ./c
wodeMBP:Desktop wo$ cd c
wodeMBP:c wo$ ls
banana picture.jpeg
wodeMBP:c wo$
例子四 复制整个目录
整个目录的内容都进行复制需要用到选项 -R
wodeMBP:Desktop wo$ cp -R a backup_a
wodeMBP:Desktop wo$ ls
a backup_a main
b c main.c