Contents

命令学习-cp

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

语法

cp [选项] [参数]

选项

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

参数

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

实例

  1. 复制文件并更新已存在文件
1
cp -r -u -v /tmp ~/test/tmp

此命令会递归地复制 /tmp 下的文件到 ~/test/tmp 目录中,且仅在源文件更新时才会进行复制,并详细显示操作。

  1. 使用备份选项复制文件并创建编号备份
1
cp --force --backup=numbered test001.py test001.py

此命令会强制覆盖 test001.py 并且创建带编号的备份文件,如 test001.py.1 和 test001.py.2

  1. 复制文件到当前目录
1
cp ../usr/local/bin/test .

将 ../usr/local/bin/test 复制到当前目录。

  1. 将文件复制到指定目录并改名
1
cp file /tmp/file-test

将 file 文件复制到 /tmp 目录,并将其改名为 file-test

  1. 递归复制目录到另一个目录
1
cp -r /usr/local/bin /usr/bin

将 /usr/local/bin 目录及其所有内容递归地复制到 /usr/bin

  1. 交互式复制以“m”打头的 .c 文件到目标目录
1
cp -i /usr/test m*.c /usr/file

交互式地将 /usr/test 目录中所有以 m 打头的 .c 文件复制到 /usr/file。

  1. 递归强制复制目录并覆盖目标文件
1
cp -rfb ./* ../backup

将当前目录下所有文件递归地复制到兄弟目录 ../backup 中,并在覆盖文件前备份目标文件。

  1. 复制目录下的隐藏文件
1
cp -r aaa/.* ./bbb

将 aaa 目录下所有以 . 开头的隐藏文件复制到 bbb 目录中。

  1. 使用 -a 参数复制目录及其属性
1
cp -a aaa ./bbb/

递归复制 aaa 目录到 bbb 目录,并传递目录和文件的所有属性。

  1. 复制文件到当前目录
1
cp aaa.conf ./

将 aaa.conf 文件复制到当前目录。

注意事项

目标目录必须存在:cp 命令不会自动创建目录,因此目标目录必须事先存在。 权限问题:如果没有文件复制的权限,则会显示错误信息。